[英]How to determine macro value at compilation time in 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
具有相同的效果,這可能不是您所期望的。
最好考慮不同於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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.