Next: , Up: Compilers and Preprocessors


5.10.1 特定のコンパイラの特徴

コンパイラによっては異なる動作を示すものもあります.

スタティック/ダイナミックな式
Autoconfは,Cコンパイラからの情報の1ビットを抽出するトリックを信頼してい ます.負の配列の大きさを使用します.例えば,以下のCソースの引用で, ‘int’ が4バイト長かどうかをテストする方法を説明します.
          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にキャストするこ とで,この問題を解決します.