C and C++


BADMACRO.OFFSETOF : offsetofの使用

要旨

<stddef.h>で定義されているマクロの offsetof を使用しています。

プロパティ

クラス名 Use of offsetof
日本語クラス名 offsetofの使用
クラス分類 スタイル (style)
ニーモニック BADMACRO.OFFSETOF
カテゴリー
Misra2004 Misra2004:20.6 The macro offsetof, in library <stddef.h>, shall not be used
AUTOSARC++14 AUTOSARC++14:M18-2-1 The macro offsetof shall not be used.
MisraC++2008 MisraC++2008:18-2-1 The macro offsetof shall not be used.
MisraC++2023 MisraC++2023:21.2.4 The macro offsetof shall not be used
CERT-CPP CERT-CPP:EXP59-CPP Use offsetof() on valid types and members
JSF++ JSF++:18 The macro offsetof, in library <stddef.h>, shall not be used.
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっています。チェックを有効にするにはプロジェクト設定ファイル (configuration file)に以下の WARNING_FILTER ルールを追加してください。
WARNING_FILTER += allow class="Use of offsetof"

/* BADMACRO.OFFSETOF.a.c */
#include <stddef.h>

struct ptrstruct {int x; int y;};

int getoffset(void){
    return offsetof(struct ptrstruct,y); /* 'Use of offsetof' warning issued here */
}
/* BADMACRO.OFFSETOF.b.c */

#define offsetof(a,b) (a+b)

int getoffset2(void){
    return offsetof(1,2);            /* ok: not the offsetof macro defined in <stddef.h> */
}

関連のある設定ファイルパラメータ

このクラスは一般テンプレート設定ファイルで BAD_MACRO_* ルールセットによって実装されています。

設定ファイルの以下のパラメータがこのワーニングクラスのチェックに影響します。