關於extern的問題,關於extern 的問題

2022-12-30 20:20:56 字數 4085 閱讀 2505

1樓:

不是extern的錯誤。

extern bool islbuttondown; //滑鼠左鍵是否按下

extern signed int *ecgdata; //選取的資料

extern bool isdraw; //是否畫橡皮筋矩形

extern bool isdrawline; //是否畫參考線

extern bool isdrawfft;

基本就是一樓的答案。不過一樓第二行有錯,不應該有bool。

2樓:匿名使用者

extern bool islbuttondown; //滑鼠左鍵是否按下

extern bool signed int *ecgdata; //選取的資料

extern bool isdraw; //是否畫橡皮筋矩形

extern bool isdrawline; //是否畫參考線

extern bool isdrawfft;

要改成這樣的。

3樓:雙色心

錯誤 2 error c4430: 缺少型別說明符 - 假定為 int。注意: c++ 不支援預設

雖然我都忘了extern是定義的什麼的,但從這個報錯資訊來看,也看得出來,沒個int之類的不行。因為c++如果不指定乙個變數型別,它不會預設給你安排乙個。(vb就會)

好多年不程式設計了,說錯勿怪。

4樓:匿名使用者

所謂extern就是說明這個變數在別的檔案中宣告過了,在此引用。所以找到你這幾個變數宣告的地方,拷貝過來,每個前面加個extern即可。

c++ 關於 extern的小問題

5樓:匿名使用者

第一次是定義,第二次是宣告。

6樓:apple林

extern可以置於變數或者函式前,以表示變數或者函式的定義在別的檔案中,提示編譯器遇到此變數和函式時在其他模組中尋找其定義。

7樓:匿名使用者

int a ;已經宣告了,所以再宣告應該不行了

c語言中關於extern 宣告外部函式的問題 20

8樓:

在cxx中聲名一下就可以了!或者寫個頭檔案,任何寫在.c中的函式,cxx

9樓:匿名使用者

同時在乙個工程裡開啟就可以了

10樓:風雲

建議寫成標頭檔案的形式,就不會有問題了

11樓:匿名使用者

外部函式??? extern只宣告變數的吧。外部函式只需要包含它所在的標頭檔案就可以

例如 有 file1,file2,file3 ,3個檔案在file1中宣告了乙個函式 func( int a,int b);

那麼在file2,file3如果需要使用file1中的func函式時,需要在file2,file3檔案的開始位置,寫入#include"file1"才可以正確使用

12樓:

你把其他三個檔案用include包含進來就不會有問題了

關於乙個簡單的含extern程式的問題,求解疑,謝謝

13樓:風若遠去何人留

在你的**中,et.cpp和pt.cpp是兩個獨立的檔案,所以在main中引用的標頭檔案stdio.h與這兩個檔案無關。

要在et和pt中使用printf或gets,需要分別在這兩個檔案裡面引用

#include

否則就會出錯。

14樓:

錯誤資訊為:未說明識別符號。

出現以上原因只有乙個沒有宣告就直接使用了。

編譯的時候由於是先乙個乙個檔案編譯的,即使main.cpp中已經使用標頭檔案stdio.h

但是在其他檔案這個編譯時由於未使用標頭檔案stdio.h導致出現未說明識別符號這個錯。

解決方法是各個檔案頭新增標頭檔案stdio.h

還有就是以下兩個函式宣告引數做如下修改更好,

理由是這兩個函式引數只是單個char

extern void enter_string(char str);

extern void print_string(char str);

希望對您用幫助

15樓:匿名使用者

你在et.cpp檔案中使用了gets,卻沒有包含#include

同理pt.cpp檔案。

你不包含,在該檔案中就不會識別gets和printf

c++中extern問題

16樓:

extern int a;不是宣告,更不是定義,是說明——意思是我這裡要用到另乙個檔案中的變數a。當然a在這裡可見,也能得到原檔案中的值;在這裡若改變了a的值,原檔案中的a的值也就改變了。

17樓:匿名使用者

你自己寫個簡單的程式除錯一下就清楚了。

**下c++的宣告和定義問題,關於extern

18樓:q嘿仔

我剛才做了乙個實驗:

//a.cpp

#include

std::string i;

//b.cpp

#include

#include

extern std::string i;

int main ()

執行結果為:

(上面是一空行:由於末尾用了endl)

如果沒有a.cpp這個檔案,執行出錯

這是一對實驗(有沒有a.cpp檔案)

可得出這樣的結論:

a.cpp中std::string i;是定義(本來就是)

b.cpp中extern std::string i; 則是宣告(你的問題)

先別急,這只是實驗結果。我們還需要理論依據,那麼下面就試著解釋一下:

下面是另乙個例子(也是第二個實驗)

你應該知道內建型別(int等)如果作為全域性變數時,定義的同時也就初始化了(乙個內建型別有其對應的預設值;如果你將自定義型別也看成內建型別,那麼就等於說,乙個自定義型別有其對應的預設值(由預設建構函式完成))。如

//c.cpp

int i;

//d.cpp

#include

extern int i;

int main ()

那麼在這裡int i; 就是定義(並且初始化了i,初始值為0)

因而輸出結果為

0//這個實驗的執行結果符合理論依據。

(我使用的編譯器是visual studio 2008)

從這兩個實驗來看:(將兩個「預設」等同起來)

int i;

std::string i;

都可以作為初始化i的定義性語句。

那麼extern int i;

extern std::string i;

也具有定義行為(這個很明顯與extern的用法相悖)

在以上兩個試驗中:int 與 string 有「區別」嗎?所有的**都一樣只不過把std::

string 換成了 int而已!如果你能解釋int的情況,那麼我想std::string問題也就迎刃而解了!

於是我個人總結出乙個結論:

不論是內建型別還是自定義型別,前面有extern關鍵字,如果沒有顯式地初始化引數(即就是自定義型別的預設建構函式被extern遮蔽了,不起初始化的作用),那麼就按宣告對待。

可能我的描述很混亂,希望你好好看看上面的例子,就明白了!

注意:從這裡可以看出來預設建構函式的特殊性!

19樓:

string 實際上是:

typedef basic_stringstring;

extern std::string name; 屬於宣告如果是 extern std::string name("zhang3li4"); 另當別論。

extern 相當宣告為 全域性量 (外部於本程式塊)。

關於鸚鵡的問題,關於鸚鵡問題

40元以下的只有虎皮了吧.虎皮單隻的 在30元左右,牡丹鸚鵡單隻的 在70 80不等。一般能說話的多為大型鸚鵡,小型鸚鵡會說話的很少,不過加倍的訓練後,也是有可能學會說話的。虎皮鸚鵡的品種有很多,顏色有綠,藍,黃,紫,白等,虎皮鸚鵡比起牡丹鸚鵡來要安靜的多,而且更加容易上手。辨別公母 未成年的虎皮公...

關於用電問題,關於數學的問題

電價分類說明 一 居民生活用電 為城鄉居民住宅家庭生活所使用的電力,包括居家照明 家用電器和溫度調節等用電 但興辦家庭商業,其經營性用電執行商業用電 高校學生公寓和學生集體宿舍用電。二 非居民照明用電 為執行居民生活用電 商業用電和大工業用電中車間以外的照明 含市政路燈 亮化工程等用電 辦公設施用電...

關於鸚鵡的問題,關於鸚鵡問題

好多的問題哦!鸚鵡感冒會死,禽流感嘛!如果是雌雄一對的話他們隨時都會有親暱地舉動,不是一對的話也會有這樣的舉動,甚至把平常的一些啄咬也看成是親暱,您的這一雙鳥是屬於虎皮鸚鵡,但是品種不怎麼好,虎皮花紋消退得太嚴重,區分鳥類的雌雄必須要有一定的經驗,光聽商家的介紹是不一定的。個人認為作為一般剛接觸養鳥...