sizeofは演算子であり、コンパイル時に整数定数と評価されることを理解しています。 しかし、それのように、それはの#ifプリプロセッサディレクティブで使用することができないようです。このような使用ではない理由(cygwinの-gccの3.4.4などのVisual C++ 6.0レポートコンパイルエラー)なぜprepofcessor条件でsizeofを使用できないのですか?
#if 4 == sizeof(int)
typedef int Int32;
#endif
許可されている?
実際に前処理は、コンパイル時に行われ、以前のフェーズのいずれかで行われます。 'sizeof'の評価は後の段階で行われます。 – sbi
@sbi前処理はコンパイルの一部ではありません。コンパイラは通常、実際のコンパイルの前にプリプロセッサを実行しますが、そうしないようにコンパイラに指示できます。 RichNの答えは100%正しいです。 – qrdl
さて、私は間違っていましたが、専門用語でしかありません。それは_翻訳の段階の1つです。このhttp://stackoverflow.com/questions/1476892/1479972#1479972によれば、「コンパイル」と呼ばれるフェーズは存在しません。その意味は、解釈にオープンなようです。 – sbi