簡體   English   中英

預處理器命令順序

[英]Preprocessor command order

我知道當我在 C++ 中只有一個源文件時,預處理器命令會按照它們被寫入的順序執行,但是如果我有多個源文件怎么辦? 如何做出決定,首先應該采用哪個源文件? 我在兩個源文件中都寫了這樣的代碼:

#ifndef b 
#define b 10
int a = 15;
#endif

當我編譯時,出現錯誤,該變量 a 已被定義。 但是,如果有命令#ifndef 和#endif,為什么?

我假設您在 linker 階段遇到此錯誤。 這是因為您的兩個源文件都定義了一個具有相同名稱的符號,並且 linker 在嘗試合並每個文件中的 object 代碼時放棄了。 如果您的意圖是讓至少一個文件有自己的單獨版本a ,請在該文件中將其聲明為static 那么 linker 錯誤應該是 go 因為 static a限制在它自己的文件中。

暫無
暫無

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

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