c语言 extern_Visual C++ 6.0环境中C语言extern 变量使用过程报错
????extern?變量稱為外部存儲變量。extern聲明了程序中將要用到但尚未定義的外部變量。本次錯誤的解決方法同樣適用于外部函數。外部函數就是可以被其他源文件調用的函數,定義外部函數時使用extern進行修飾。
????首先,分別創建兩個源文件“ex1.c”和“ex2.c”。其中,“ex2.c”聲明了一個外部整型變量a,暫未定義它的值;“ex1.c”中定義了一個變量名相同(a)的整形變量,值為10。此時執行“ex2.c”報如下錯誤:
Linking...
ex2.obj : error LNK2001: unresolved external symbol _a
Debug/ex2.exe: fatal error LNK1120: 1 unresolved externals
執行 link.exe 時出錯.
????出現上面的錯誤,百度的解法五花八門,其中最熱門的解法,也就是大家普遍發表的文章內容,如下圖,然而卻不管用(此方法可能適用于其他情況)。
????其實只需要分別編譯一下兩個源文件“ex1.c”和“ex2.c”即可解決(主要還是“ex1.c”的編譯)。一開始作者也是沒有分別編譯一下這兩個源文件,只是編譯和構建了“ex2.c”,結果就報上面的錯誤,然后埋頭于百度的解法,硬是沒能解決。
????是否編譯了“ex1.c”可以從左側欄中判斷,編譯后有變量a。
????編譯前:
????編譯后:
????此時執行“ex2.c”不再報錯,控制臺輸出結果
[注]:在C語言中定義函數時,如果不指明函數是內部函數還是外部函數,那么將默認指定函數為外部函數,也就是說,定義外部函數時可以省略關鍵字extern,但是不能省略聲明外部函數中的extern。
總結
以上是生活随笔為你收集整理的c语言 extern_Visual C++ 6.0环境中C语言extern 变量使用过程报错的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: docker 安装kafka_larad
- 下一篇: c++11 string u8_深入理解