august 发表于 2007-8-14 12:05:27

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为全局变量了吗?

coolpay64 发表于 2007-8-14 12:55:13

首先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]
查看完整版本: extern的问题