C 專案中「wat」的多個定義
給定的程式碼由四個檔案組成:FileA.cpp、FileA. h、 FileB.cpp 和FileB.h。編譯時,遇到錯誤「multipledefinition of `wat'」。
FileB.h 定義了一個名為'wat' 的整數變量,如下:
#ifndef FILEB_H_ #define FILEB_H_ int wat; void world(); #endif /* FILEB_H_ */
由於這個頭檔包含在FileA.cpp 和FileB.cpp 中,編譯器檢測到“wat”被定義了多次。出現這種情況是因為巨集 FILEB_H_ 未在所有頭檔中正確定義。
要解決此問題,頭檔應修改如下:
FileA.h:
#ifndef FILEA_H_ #define FILEA_H_ #include "FileB.h" void hello(); #endif /* FILEA_H_ */
Fil eB.h:
#ifndef FILEB_H_ #define FILEB_H_ extern int wat; // Declare 'wat' as external void world(); #endif /* FILEB_H_ */
FileB.cpp:
#include "FileB.h" int wat = 0; // Define 'wat' with its initial value void world() { // More code }
作者在FileB.h 中使用“extern”,我們通知編譯器「wat」在其他地方定義,而且它不應該在目前文件中搜尋其定義。然後在 FileB.cpp 中提供「wat」的實際定義,避免多重定義錯誤。
以上是為什麼我的 C 程式碼會產生「『wat』的多重定義」錯誤,如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!