#define L 1
#define M L+1
int main(void){
int N=L*M*2;
char s [N]={'1','2'};
printf("%d", sizeof(s));
return 1;
}
上記のコードをコンパイルできないのはなぜですか?Eclipseのコンパイラーは2つのことを言います:
- 可変サイズのオブジェクトが初期化されない可能性があります。マクロでMとLを使用してNを定義したためですか、それともarr[x] 型の配列を初期化できないためですか。xはどのような状況でも可変です。
- 配列初期化子の余分な要素-それはどういう意味ですか?