簡體   English   中英

如何在C編譯時確定宏值?

[英]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具有相同的效果,這可能不是您所期望的。

最好考慮不同於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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM