首頁 >後端開發 >C++ >如何解決 C 中的「變數的多重定義」錯誤?

如何解決 C 中的「變數的多重定義」錯誤?

Susan Sarandon
Susan Sarandon原創
2024-11-30 13:10:11250瀏覽

How to Resolve

C 中變數的多重定義

在C 專案中處理多個檔案時,您可能會遇到與變數的多個定義相關的錯誤。請考慮以下情況:

FileA.cpp:

#include "FileA.h"

int main()
{
    hello();
    return 0;
}

void hello()
{
    //code here
}

FileA.h:

#ifndef FILEA_H_
#define FILEA_H_
#include "FileB.h"
void hello();

#endif /* FILEA_H_ */

FileB.cpp:

#include "FileB.h"

void world()
{
    //more code;
}

#ifndef FILEB_H_
#define FILEB_H_

int wat;
void world();


#endif /* FILEB_H_ */
FileB.h:

嘗試編譯此檔案時程式碼中,你可能會遇到一個錯誤,指出「`wat'的多個定義。」

解釋:

出現錯誤是因為你定義了一個全域變數wat,在你的編譯單元中兩次。 FileA.h 和 FileB.h 都包含 wat 聲明,在全域範圍內定義了兩次。

解決方案:

要解決此問題,請按照以下步驟操作步驟:

FileB.h:
extern int wat;

FileB.cpp:
int wat = 0;

透過使用extern FileB.h,您通知編譯器在其他地方存在名為 wat 的變數。在這種情況下,您可以在 FileB.cpp 中使用初始值設定項定義實際變數。

這種方法可確保 wat 在全域範圍內宣告一次,從而消除多重定義錯誤。

以上是如何解決 C 中的「變數的多重定義」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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