可以在预处理程序指令中使用哪个全局变量 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指令中使用吗?
答案 0 :(得分:9)
对不起,你完全不能这样做。预处理器看不到变量。预处理器的核心是文本操纵器。它可以看到的唯一值是使用#define
定义的值,而不是变量。
答案 1 :(得分:2)
只有使用#define
定义的宏才能在#if
中获得预期值。所有其他符号(更准确地说,宏扩展后保留在#if
行上的所有标识符,除defined
外,在C ++中,算术运算符的某些“替代拼写”,例如and
,or
,bitand
,bitor
和compl
)被解释为值为0.