1樓:網友
實際上沒有任何區別。
函式宣告前加extern表示這個函式的實現不在當前檔案中(嚴格地說是編譯元),但是不加extern一樣會在其他編譯元中尋找實現。而加了extern也一樣會在當前編譯元中尋找。
別被誤導。c/c++不允許函式重名(基本上也就是指令碼語言允許。後定義的會把先定義的覆蓋。c++看似有名字一樣的函式,只不過把參數列也算在函式名裡了。
至於是否規範。起碼20年前的裡的函式宣告就已經不帶extern了。在每個編譯單元單獨宣告外部函式本身就是自找麻煩的做法|||
2樓:網友
檔案1呼叫了檔案2中的f函式,應該是檔案2的函式宣告要用extern
在檔案1中呼叫,不用寫extern
3樓:
寫extern 是比較正規的寫法,一是告訴編譯器,要建外部連結,二是給讀程式的人方便,到另乙個程式去看源程式。
現在的編譯器比較聰明,找不到函式定義,你不寫extern ,它也知道到外面去找。
c++裡也許有用,c++可以寫同名函式,如果加了extern,編譯器就用外邊的,不寫extern,就用裡面的同名函式。
bluewanderer 對 "正規的寫法" 有意見。按standard ansi c 的規則:
extern void factorial (int n);
the keyword extern is optional ( default) for a function prototype.
預設,不寫extern,就是extern。
所以,明確寫extern 是"正規的寫法",也就是c語言的舊傳統。
int *f();與int (*f)()有什麼區別?
4樓:網友
int *f();函式f的返回值是指標變數。
inf (*f)()定義乙個指標函式。
因為()運算子的優先順序比*高。
5樓:網友
看指標函式與函式指標的區別。
c語言中在原始檔中呼叫另一檔案中函式例如 int f(); 為什麼不能將extern int f();放在該檔案的.h中?
6樓:網友
可以的啊,除非另乙個檔案裡面的int f用static修飾了,記得makefile要將這兩個原始檔放到一起奧。
我有乙個函式 extern int f(int *); 它接受指向 int 型的指標。我怎樣用引用方式傳入乙個常數?下面這樣的
7樓:索美數碼
在 c99 中, 你可以使用 ``複合常量":
f((int));
int five = 5;
f(&five);
int f(int a,int b);說明函式是什麼函式?外部函式還是內部函式
8樓:網友
不知道你想問什麼,外部函式不是帶extern 宣告的嗎?
int f1(int xb) {extern int xa,以下題目答案是什麼,怎麼運算的,步驟詳細說明下
9樓:網友
答案是xa=5,xb=4,result=15#include
#include""
int f1(int xb)
void main()
extern int xb;
int xa=5;
這裡的xa是main函式中的區域性變數,xb是其他檔案中的值,就是給出的4,f1(xa)就是15,剛才已經解釋了。
10樓:網友
結果xa=5,xb=4,result=15;
第乙個%d對應main函式中int xa=5輸出 xa=5第二個%d對應extern int xb(表示函式體外部的xb),此時的xb是main函式後面的 xb=4,所以輸出xb=4;
第三個%d對應f1(xa),也即f1(5)(因為int xa=5),到了f1函式體中。
xb=傳入的值5,xa 為外部變數int xa=3,所以xa*xb=15.
1.4 extern 在函式宣告中是什麼意思?
11樓:匿名使用者
它可以用作一種格式上的提示表明函式的定義可能在另乙個原始檔中, 但在extern int f();
和int f();
之間並沒有實質的區別。
int a是定義還是聲名 和extern有什麼區別?
12樓:陝西it優就業
extern 是引用外部變數,這個a是在此檔案外定義的。
int a 是本檔案自己定義的。
extern int a 定義的a變數表示該變數在使用前已經定義了,一般有兩種情況,一是該變數是在其他的檔案中定義的全域性變數,簡稱外部變數。二種情況表示變數在本檔案中定義的全域性變數,但是在使用之後(因為作用域)定義的。
為什麼宣告 extern int f(struct x *p); 報出了乙個奇怪的警告資訊 ``結構 x 在引數列表中宣告"?
13樓:
與 c 語輪銀乎言通常的作用範圍規則大相徑庭的是, 在原型中第一次宣告 (甚至提到) 的結構不能和同一原始檔中的其它結構相容, 它在原型的結束出就超出了作用範圍。
要解決這個問題, 在同一原始檔的原型之前放上這樣臘悉的宣告:
struct x;
它在檔案範圍內提供了乙個不完整的結構 x 的宣告, 這樣, 後續的用到結構 x 的宣告至少能夠確定它們引搏消用的是同乙個結構 x。
for與since的用法與區別,for與since的用法與區別
since 時間段,for 時間點 for和since 都可用於完成時態。區別 for 後接時間段,如 for2 years since後接時間點,如 since 2yearsago since和for的區別用法 1 用法不同。這兩個詞都可以和表示時間的詞語連用。一般說來,for後接一段時間 累計時...
Coreldraw與photoshop與3Dmax什麼區別
coreldraw 向量設計軟體 主要用於向量圖形設計 例如商標 企業vi ci等 還有網路產品的ui設計 photoshop 使用範圍更廣,與影象設計有關的都可以使用ps處理設計 3dmax 三維影像設計軟體 簡單說 coreldraw 平面軟體,大多用來排版 印刷。photoshop 平面軟體,...
與同學對話,與同學對話
a 你還記得小時候的事情嗎?b 當然,小時候我經常和爺爺奶奶到外面去玩呢 a 看來,你的童年一定很快樂,對嗎?b 嗯,家裡的人都特別喜歡我。爺爺看書的時候,我總是在他身邊靜靜的坐著,後來他看我也喜歡,就經常給我講那書裡面的故事。到了吃飯的時候,是最開心的了,奶奶的手藝實在是太棒了,簡直能讓人把舌頭都...