在预处理程序指令中使用变量

时间:2013-01-19 19:56:30

标签: c++ c preprocessor-directive

可以在预处理程序指令中使用哪个全局变量 file.cpp

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

file.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指令中使用吗?

2 个答案:

答案 0 :(得分:9)

对不起,你完全不能这样做。预处理器看不到变量。预处理器的核心是文本操纵器。它可以看到的唯一值是使用#define定义的值,而不是变量。

答案 1 :(得分:2)

只有使用#define定义的宏才能在#if中获得预期值。所有其他符号(更准确地说,宏扩展后保留在#if行上的所有标识符,除defined外,在C ++中,算术运算符的某些“替代拼写”,例如andorbitandbitorcompl)被解释为值为0.