簡體   English   中英

在C ++中使用Extern變量進行編譯

[英]Compiling with Extern variable in C++

我有一個頭文件:headerFiles.h,其中包含以下extern變量:

extern char *err_msg;
extern char recvbuf[DEFAULT_BUFLEN];
extern char sendbuf[DEFAULT_BUFLEN]; 

該頭文件包含在:Helper.h和Helper.h被包含在Helper.cpp中,因此,

headerFiles.h- >包括在-> Helper.h- >包括在-> Helper.cpp

但是當我在Helper.cpp文件中引用extern變量時,編譯器給出以下鏈接錯誤:

錯誤LNK2001無法解析的外部符號“ char * err_msg”(?err_msg @@ 3PADA)

我認為可以通過命令行進行編譯,但是我想知道如何使用Visual C ++進行編譯。 我有VC ++ 2017 Community Edition。 請幫忙。

這里

僅在變量和函數的聲明中允許使用extern說明符(類成員或函數參數除外)。 它指定外部鏈接,並且從技術上講不會影響存儲持續時間,但是不能在自動存儲持續時間對象的定義中使用它,因此所有外部對象都具有靜態或線程持續時間。 此外,使用extern並且沒有初始化程序的變量聲明不是定義。

換句話說,您的代碼只是聲明某個位置定義了err_msg (及其他)變量(!),並依賴鏈接程序知道它在哪里。 這就是為什么當鏈接器無法找到請求的名稱時收到鏈接器錯誤的原因。

一種可能的解決方案是定義:

char *err_msg;
char recvbuf[DEFAULT_BUFLEN];
char sendbuf[DEFAULT_BUFLEN]; 

在項目中的一個* .cpp文件中(只有一個)。

暫無
暫無

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

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