Microchips XC8 Cコンパイラ1.12で開発しています。
次のコード スニペットがありますが、コンパイラは満足していません。
struct _foo {
int a;
};
enum BAR {
CONST1 = sizeof(struct _foo)
};
私が得るエラーは次のとおりです。main.c:6: error: integer expression required
なぜそのエラーが生成されるのですか? Cの構造体のサイズは一定ではありませんか? sizeof(int) を使用すると、すべて正常に動作します。
注: XC8 コンパイラ v1.12 は、最新の C99 標準ではなく、C90 標準に準拠しています。
PSこれはコンパイルします:
char abc[sizeof(struct _foo)];
また、この式はコンパイル時の定数である必要があるため、enum 宣言で実際に問題が発生しているとは思えません。