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

或文件.cpp

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

在处理程序指令中使用变量的规则是什么?如果一个变量可以恒定折叠,它可以在#if/#elif#else 指令中使用吗?

4

2 回答 2

11

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

于 2013-01-19T20:04:30.223 回答
2

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

于 2013-01-19T20:05:17.697 回答