首頁 >後端開發 >C++ >為什麼我在 C 中遇到「『wat』的多重定義」編譯時錯誤?

為什麼我在 C 中遇到「『wat』的多重定義」編譯時錯誤?

Susan Sarandon
Susan Sarandon原創
2024-12-08 07:04:16840瀏覽

Why Am I Getting a

C 中變數的多重定義

遇到「multipleDefinitions for wat」的編譯時錯誤可能會令人困惑。讓我們分析提供的原始程式碼並找出問題。

在您的程式碼中,您有四個檔案:FileA.cpp、FileA.h、FileB.cpp 和 FileB.h。編譯時,編譯器會偵測到名為 wat 的變數的多個定義。

經過檢查,您已在FileA.h 和FileB.h 中定義了變數wat:

// FileA.h
void hello();

#endif /* FILEA_H_ */

// FileB.h
int wat;
void world();

#endif /* FILEB_H_ */

當您程式碼編譯時,頭檔多次包含在編譯單元中,導致變數wat重複定義。要解決此問題,您需要將 wat 的聲明與其定義分開。

解:

  1. 在FileB.h 中將wat 宣告為外部變數:
extern int wat;

這通知編譯器wat 將被定義

  1. 在FileB.cpp 中定義wat:
int wat = 0;

現在,編譯時,編譯器會正確辨識出在FileB.h 中宣告並定義的wat在FileB.cpp中,解決多重定義錯誤。

以上是為什麼我在 C 中遇到「『wat』的多重定義」編譯時錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn