簡體   English   中英

外部變量聲明和定義

[英]Extern variable declaration and definition

我知道extern變量只是聲明,以通知編譯器存在一個變量,可以在任何地方定義它。 我的問題是聲明和定義都可以存在於同一文件中嗎?

main.c中

extern int var;
int var = 10;

當您包含標頭時,該文件實際上已復制到您的源文件中(在預處理之后)。 這意味着,如果extern聲明在源所包含的頭文件中,則基本上總是這樣做。

您可以這樣做,但是沒有意義,因為變量的聲明具有相同的用途。 應將extern放在頭文件中,並包含在此.c文件中,以便編譯器可以檢查您要告訴程序其余部分的類型是否與變量的實際類型匹配。 您將在其他要引用該變量的.c文件中包含標頭。 請注意,聲明該變量的.c文件並非嚴格必須要看到extern ,但最佳做法是確保類型一致。

我記得有人在其中聲明變量的代碼:

char error_ message[1024];

在一個.c文件中,然后執行以下操作:

extern char *error_message;

在另一個.c文件中。 這樣編譯和鏈接就很好了,但是在訪問變量時崩潰了。 如果extern在聲明中可見,則編譯器將抱怨類型不匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM