找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2521|回复: 1

[通用编程] extern的问题

[复制链接]
发表于 2007-8-14 12:05:27 | 显示全部楼层 |阅读模式
#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为全局变量了吗?
发表于 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物件時用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|幻想森林

GMT+8, 2026-11-6 19:21 , Processed in 0.010126 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表