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

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

Susan Sarandon
發布: 2024-12-08 07:04:16
原創
836 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板