Gre*_*ill 121

您可以通过以下方式展示差异:

#define FOO 0
#if FOO
  // won't compile this
#endif
#ifdef FOO
  // will compile this
#endif
Run Code Online (Sandbox Code Playgroud)

#if检查符号的,同时#ifdef检查符号的存在(无论其值如何).

  • 用于明确指出将某事定义为零的+1将禁用#if,但不禁用#ifdef. (9认同)

ere*_*eOn 38

#ifdef FOO
Run Code Online (Sandbox Code Playgroud)

是一个快捷方式:

#if defined(FOO)
Run Code Online (Sandbox Code Playgroud)

#if 也可用于其他测试或更复杂的预处理器条件.

#if defined(FOO) || defined(BAR)
Run Code Online (Sandbox Code Playgroud)

  • 或者我最喜欢的#if 0而不是评论多行. (12认同)
  • @Tony,pascal:我认为Pascal并不是在谈论#if(0),而是如果(0).代码将不会被执行,但会被编译,即生成指令.如果启用了优化(通常在"释放模式"下),则不会生成CPU指令. (4认同)