使用if子句而不是处理器#ifdef

the*_*617 1 c compiler-flags

我正在使用一个#ifdef块有条件地包含一个基于代码块 - Dflag传递给编译器.

有没有办法实现这个if

有点像:

if (defined(flag)) {

}
Run Code Online (Sandbox Code Playgroud)

小智 5

如果定义宏以使其计算为零或非零,则可以在if语句的条件下使用它.由于它是一个编译时常量,如果它为零,编译器中的死代码消除器传递将无论如何都将删除无法访问的代码.


das*_*ght 5

您使用预处理器生成不同的标志,可以使用运行时if语句进行测试,如下所示:

#ifdef flag
#define flag_defined 1
#else
#define flag_defined 0
#endif
Run Code Online (Sandbox Code Playgroud)

现在你可以这样做:

if (flag_defined) ...
Run Code Online (Sandbox Code Playgroud)