相关疑难解决方法(0)

“真”和“假”在预处理器条件中是否具有通常的含义?

给定一个 C++11 编译器,#error它最终应该使用哪个正确的编译器?

// no #includes!
#define SOMEMACRO true
#if SOMEMACRO
  #error "it was true"
#else
  #error "it was false"
#endif
Run Code Online (Sandbox Code Playgroud)

Godbolt 演示

显然我#error只是作为测试使用。我知道truefalse以适当的语言定义,但这是预处理器上下文。在 C99 中,它似乎不被预处理器识别。

我问是因为似乎我尝试过的所有编译器都将其视为“真”,而静态代码分析工具坚持认为true未定义,隐含错误并以“它是假的”结束。

c c++ preprocessor c++11

15
推荐指数
2
解决办法
1187
查看次数

C++,使用#if TRUE条件指令

使用类似的声明时#if TRUE,我应该发生什么?非常感谢您的解释!我理解#if 1它是如何工作的,但它在我的代码中给出了完全不同的结果而不是使用#if TRUE.我理解#if是条件指令,这意味着什么; 它只是我不理解的TRUE(或FALSE)部分.似乎以这种方式使用它从不执行语句后面的代码.这是一个例子:

#if TRUE
     cout << "true" << endl;
#endif

#if FALSE
     cout << "false" << endl;
#endif
Run Code Online (Sandbox Code Playgroud)

我似乎永远不会在屏幕上看到"true"或"false",并且使用Visual Studio,内部语句会自动显示为灰色.

c++ compiler-directives visual-studio visual-c++ c-preprocessor

5
推荐指数
2
解决办法
4280
查看次数