如何在C语言编译时确定宏值



如果我有一个宏在我的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具有相同的效果,这可能不是您所期望的。

最好考虑不同于0SIGDET的数字定义来触发条件代码。然后可以使用以下测试:

#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

相关内容

  • 没有找到相关文章

最新更新