首頁 >後端開發 >C++ >為什麼多次包含頭檔會導致 C 中的「多重定義」錯誤?

為什麼多次包含頭檔會導致 C 中的「多重定義」錯誤?

Barbara Streisand
Barbara Streisand原創
2024-12-27 17:00:11852瀏覽

Why Does Multiple Inclusion of a Header File Cause

C 中變數的多次定義

在 C 中,多次定義一個變數可能會導致編譯錯誤。當多個文件包含頭文件,導致相同變數有多個定義時,可能會出現此問題。

考慮以下場景:

// FileA.cpp
#include "FileA.h"

int main()
{
    hello();
    return 0;
}
// FileA.h
#ifndef FILEA_H_
#define FILEA_H_
void hello();
#endif
// FileB.cpp
#include "FileB.h"
// FileB.h
#ifndef FILEB_H_
#define FILEB_H_

int wat;
void world();
#endif

編譯此程式碼時,您可能會遇到錯誤“multipledefinition of wat”,因為FileA.h 和FileB.h都定義了變數wat`.

解:

要解決這個問題,我們可以使用 extern 關鍵字。該關鍵字將變數聲明為存在於程式中的其他位置,並防止它被多次定義。

// FileB.h
extern int wat;
// FileB.cpp
int wat = 0;

透過在 FileB.h 中將 wat 宣告為 extern,我們實質上是告訴編譯器wat 的定義存在於另一個檔案中(本例為 FileB.cpp)。這確保了不會有變數的多個定義,並允許編譯順利進行。

以上是為什麼多次包含頭檔會導致 C 中的「多重定義」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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