0

プリプロセッサ ディレクティブ file.cpp で使用できるグローバル変数

int variable = 1;
#if variable >= 1
    int a = 0;
#else 
    int a = 1;
#endif

また

ファイル.cpp

const int variable = 1;
#if variable >= 1
    int a = 0;
#else 
    int a = 1;
#endif

またはfile.cpp

#include "header.h"
// extern in variable; in the header.h
#if variable >= 1
    int a = 0;
#else 
    int a = 1;
#endif

proprocessor ディレクティブでの変数の使用を管理するルールは何ですか? 定数畳み込み可能な変数の場合、#if/#elif#else 指令で使用できますか?

4

2 に答える 2

11

申し訳ありませんが、これはまったくできません。変数はプリプロセッサには見えません。プリプロセッサは、本質的にテキスト マニピュレータです。それが見ることができる唯一の値は#define、変数ではなく、で定義されたものです。

于 2013-01-19T20:04:30.223 に答える
2

で定義されたマクロのみ#defineが、#if. 他のすべての記号 (より正確には、#ifマクロ展開後に行に残るすべての識別子。ただし、C++では、、、、、、などのdefined算術演算子の特定の「代替スペル」を除く) は、値 0 として解釈されます。andorbitandbitorcompl

于 2013-01-19T20:05:17.697 に答える