extern的问题
#include<stdio.h>void add()
{
a=3;
c=a+b;
}
void main()
{
extern int a,b,c;
a=b=4;
add();
printf("%d\n",c);
}
为什么样会报错呢?不是已经声明ABC为全局变量了吗? 首先extern不是代表全局變數,請參照上文有關生存時間的概念
再說一回,全局變數的定義是在檔案的最底層scope
#include<stdio.h>
int a,b,c;//這兒
void add()
{
a=3;
c=a+b;
}
void main()
{
a=b=4;
add();
printf("%d\\n",c);
}
這情況下,a,b,c才算得上是全局變數
extern代表某物事曾經在外部檔案定義過
extern者,external(外部)也
比如某寫了兩個檔安
a.cpp
#include<stdio.h>
int a=50; //在檔案基層定義才是全局變數
....
b.cpp
#include<stdio.h>
int main(){
extern int a;
printf("%d\\n",a);
}
同時編譯兩個檔案時,output便會是50
好吧,也就是說,extern是多檔案源碼的產物(使用include不算是多檔案)
而extern多數用在建立或使用library物件時用
页:
[1]