[英]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.