C 中變數的多次定義
在 C 中,多次定義一個變數可能會導致編譯錯誤。當多個文件包含頭文件,導致相同變數有多個定義時,可能會出現此問題。
考慮以下場景:
// FileA.cpp #include "FileA.h" int main() { hello(); return 0; }
// FileA.h #ifndef FILEA_H_ #define FILEA_H_ void hello(); #endif
// FileB.cpp #include "FileB.h"
// FileB.h #ifndef FILEB_H_ #define FILEB_H_ int wat; void world(); #endif
編譯此程式碼時,您可能會遇到錯誤“multipledefinition of wat”,因為FileA.h 和FileB.h都定義了變數wat`.
解:
要解決這個問題,我們可以使用 extern 關鍵字。該關鍵字將變數聲明為存在於程式中的其他位置,並防止它被多次定義。
// FileB.h extern int wat;
// FileB.cpp int wat = 0;
透過在 FileB.h 中將 wat 宣告為 extern,我們實質上是告訴編譯器wat 的定義存在於另一個檔案中(本例為 FileB.cpp)。這確保了不會有變數的多個定義,並允許編譯順利進行。
以上是為什麼多次包含頭檔會導致 C 中的「多重定義」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!