首頁 > 後端開發 > C++ > 為什麼我的 C 程式碼會產生「『wat』的多重定義」錯誤,如何修復它?

為什麼我的 C 程式碼會產生「『wat』的多重定義」錯誤,如何修復它?

Barbara Streisand
發布: 2024-12-04 03:56:10
原創
1015 人瀏覽過

Why Does My C   Code Produce a

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

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