簡體   English   中英

多個#ifndef語句-應用哪一個

[英]Multiple #ifndef statements - which one gets applied

說我有五個文件: main.c, sample1.c, sample1.h, sample2.csample2.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.

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