小编Dev*_*vin的帖子

为什么定义的(X)在没有空格的预处理器定义中不起作用?

包含的预处理程序定义defined(X)永远不会评估为true,但(defined X)会.这发生在MSVC9中; 我还没有测试过其他预处理器.一个简单的例子:

#define FEATURE0 1
#define FEATURE1 0
#define FEATURE2 1

#define FEATURE3 (FEATURE0 && !FEATURE1 && (defined(FEATURE2)))
#define FEATURE4 (FEATURE0 && !FEATURE1 && (defined FEATURE2))
#define FEATURE5 (FEATURE0 && !FEATURE1 && (defined (FEATURE2)))

#if FEATURE3
#pragma message("FEATURE3 Enabled")
#elif (FEATURE0 && !FEATURE1 && (defined(FEATURE2)))
#pragma message("FEATURE3 Enabled (Fallback)")
#endif

#if FEATURE4
#pragma message("FEATURE4 Enabled")
#elif (FEATURE0 && !FEATURE1 && (defined FEATURE2))
#pragma message("FEATURE4 Enabled (Fallback)")
#endif

#if FEATURE5
#pragma message("FEATURE5 Enabled")
#elif (FEATURE0 && …
Run Code Online (Sandbox Code Playgroud)

c++ visual-c++

4
推荐指数
1
解决办法
177
查看次数

标签 统计

c++ ×1

visual-c++ ×1