コンパイラによっては異なる動作を示すものもあります.
int
main (void)
{
static int test_array [sizeof (int) == 4 ? 1 : -1];
test_array [0] = 0
return 0;
}
知っている限りでは,このトリックをサポートしないコンパイラは一つです.そ れはHP-UX 11.00のHPのCコンパイラです(“バンドル”されているものだけでは なく,実際のものもそうです).
$ cc -c -Ae +O2 +Onolimit conftest.c
cc: "conftest.c": error 1879: Variable-length arrays cannot \
have static storage.
Autoconfは,比較する前にsizeof (int)をlongにキャストするこ
とで,この問題を解決します.