GCC コンパイラと Oracle Developer Studio コンパイラは異なったシンボルを事前定義します。
gcc が C および C++ のために事前定義したシンボルを確認するには:
$ gcc -E -dM -xc /dev/null $ g++ -E -dM -xc++ /dev/null
Oracle Developer Studio C および C++ コンパイラが事前定義したシンボルを確認するには:
$ cc -xdumpmacros -E /dev/null $ CC -xdumpmacros -E /dev/null
さまざまなコンパイラオプションを使用すると、すべてのコンパイラについて、事前定義されたマクロとその値に影響を与える可能性があります。–m32|–m64 オプションと言語オプション (std=v) は、事前定義されたマクロに特に影響を与えます。
この出力には、主に glibc 内に定義されている、移植性のないさまざまな関数についてのヘッダーファイル宣言を有効にするために使用される _GNU_SOURCE マクロを定義するソースコードも含まれています。詳細な情報は、http://stackoverflow.com/questions/5582211/what-does-define-gnu-sourceimply から入手できます。