[英]Multiple #ifndef statements - which one gets applied
說我有五個文件: main.c, sample1.c, sample1.h, sample2.c
和sample2.h
,其中在每個文件中, DEBUG_PRINTS
的定義如下:
#ifndef DEBUG_PRINTS
#define DEBUG_PRINTS 0
#endif
並使用gcc編譯代碼:
gcc -Wall main.c sample1.c sample2.c -o main
現在,我將一個文件中的DEBUG_PRINTS
的值更改為1
。 在不打印到終端的情況下,如何確定將應用哪個值?
此外,如何在每個文件的本地定義DEBUG_PRINTS
就像對變量使用static
關鍵字一樣?
每個文件分別編譯。 一個文件中的宏在其他任何文件中均不可見。 一旦文件被獨立編譯,結果對象將鏈接在一起以創建可執行文件。
#ifndef
表示該宏是否在您包含的標頭之前或標頭中根本沒有定義 。 您的情況下,默認值為0。
如果將一個文件中的DEBUG_PRINTS
更改為1
,它將覆蓋在頭文件中的#ifndef
中的#define
。 您基本上是在本地定義或將導入的頭文件中的默認DEBUG_PRINTS
覆蓋為1
。
否則,宏僅對該文件或標頭可見。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.