C 中變數的多重定義
在C 專案中處理多個檔案時,您可能會遇到與變數的多個定義相關的錯誤。請考慮以下情況:
FileA.cpp:
#include "FileA.h" int main() { hello(); return 0; } void hello() { //code here }
FileA.h:
#ifndef FILEA_H_ #define FILEA_H_ #include "FileB.h" void hello(); #endif /* FILEA_H_ */
FileB.cpp:
#include "FileB.h" void world() { //more code; }
#ifndef FILEB_H_ #define FILEB_H_ int wat; void world(); #endif /* FILEB_H_ */FileB.h:
嘗試編譯此檔案時程式碼中,你可能會遇到一個錯誤,指出「`wat'的多個定義。」
解釋:出現錯誤是因為你定義了一個全域變數wat,在你的編譯單元中兩次。 FileA.h 和 FileB.h 都包含 wat 聲明,在全域範圍內定義了兩次。
解決方案:要解決此問題,請按照以下步驟操作步驟:
FileB.h:extern int wat;
FileB.cpp:
int wat = 0;
透過使用extern FileB.h,您通知編譯器在其他地方存在名為 wat 的變數。在這種情況下,您可以在 FileB.cpp 中使用初始值設定項定義實際變數。
這種方法可確保 wat 在全域範圍內宣告一次,從而消除多重定義錯誤。以上是如何解決 C 中的「變數的多重定義」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!