幻想森林

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

[通用编程] extern的问题

[复制链接]

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
发表于 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为全局变量了吗?
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复

使用道具 举报

19

主题

842

帖子

1万

积分

⑧专业

絕望青年,一起增高吧

积分
13676
发表于 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, 2024-4-30 05:45 , Processed in 0.032911 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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