如果我有一个宏在我的C:
#ifdef SIGDET
#if SIGDET == 1
isSignal = 1; /*Termination detected by signals*/
#endif
#endif
如何在编译时设置该值?它是编译器的某个参数吗?
C编译器允许在命令行上定义宏,通常使用-D
命令行选项:
将宏SIGDET
定义为值1
。
gcc -DSIGDET myprogram.c
你可以这样指定值:
gcc -DSIGDET=42 myprogram.c
你甚至可以将宏定义为空:
gcc -DSIGDET= myprogram.c
给定程序的编写方式,将SIGDET定义为空将导致编译错误。将SIGDET
定义为2
与根本不定义SIGDET
具有相同的效果,这可能不是您所期望的。
最好考虑不同于0
的SIGDET
的数字定义来触发条件代码。然后可以使用以下测试:
#ifdef SIGDET
#if SIGDET+0
isSignal = 1; /*Termination detected by signals*/
#endif
#endif
或者
#if defined(SIGDET) && SIGDET+0
isSignal = 1; /*Termination detected by signals*/
#endif