16

sizeofは演算子であり、コンパイル時に整数定数に評価されることを理解しています。ただし、次のような#ifプリプロセッサディレクティブでは使用できないようです。

#if 4 == sizeof(int)
    typedef int Int32;
#endif

(cygwin-gcc3.4.4およびVisualC ++ 6.0はコンパイルエラーを報告します)

なぜそのような使用は許可されないのですか?

4

2 に答える 2

20

sizeofはコンパイル時に評価され、ディレクティブはコンパイル前に評価されるため、それを行う部分はコンパイラではないため、意味がわかりませんsizeof

于 2009-10-23T09:30:06.377 に答える
11

sizeofはC演算子です。プリプロセッサディレクティブでCコードを使用することはできません。プリプロセッサディレクティブは、コンパイルが行われる前に評価されます。

于 2009-10-23T09:31:04.050 に答える