Nik*_*ntz 2 c macros compilation cc
如果我的 C: 中有一个宏
#ifdef SIGDET
#if SIGDET == 1
isSignal = 1; /*Termination detected by signals*/
#endif
#endif
Run Code Online (Sandbox Code Playgroud)
如何在编译时设置该值?它是编译器的一些参数吗?
C 编译器允许在命令行上定义宏,通常使用-D命令行选项:
这将宏定义SIGDET为 value 1。
gcc -DSIGDET myprogram.c
Run Code Online (Sandbox Code Playgroud)
您可以这样指定值:
gcc -DSIGDET=42 myprogram.c
Run Code Online (Sandbox Code Playgroud)
您甚至可以将宏定义为空:
gcc -DSIGDET= myprogram.c
Run Code Online (Sandbox Code Playgroud)
鉴于程序的编写方式,将 SIGDET 定义为空会导致编译错误。定义SIGDET为与根本2不定义具有相同的效果SIGDET,这可能不是您所期望的。
最好考虑与触发条件代码SIGDET不同的任何数字定义。0然后您可以使用这些测试:
#ifdef SIGDET
#if SIGDET+0
isSignal = 1; /*Termination detected by signals*/
#endif
#endif
Run Code Online (Sandbox Code Playgroud)
或者这个替代方案:
#if defined(SIGDET) && SIGDET+0
isSignal = 1; /*Termination detected by signals*/
#endif
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1269 次 |
| 最近记录: |