extern的问题:我在A.CPP文件中定义int i = 1;在B.CPP文件中定义int i = -1;在C.CPP中定义extern int i;请问在C.CPP中i的值为多少?

zkk520777 2005-11-21 08:36:50

在A.CPP文件中定义 int i = 1;
在B.CPP文件中定义 int i = -1;
在C.CPP中定义 extern int i;
请问在C.CPP中i的值为多少,为什么?
能不能具体讲讲其中的原理?
谢谢了
...全文
180 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
dragonzxh 2005-11-22
  • 打赏
  • 举报
回复
-----------------------------------------------------------
我在vc 6.0 用MFC构造一个框架,开始编译通不过
但是采用下列方法就可以通过了~~~~~~~~~~~~~~~~~~~~~~~~~~~~
先把一个文件的int i(或a.cpp或b.cpp的) 屏蔽掉,
编译一变 然后再取消 屏蔽,再编译一遍,就可以通过了~
-----------------------------------------------------------
我是来汗这个的....
oosky2004 2005-11-22
  • 打赏
  • 举报
回复
终于对自己的答案确定了。


zenny_chen 2005-11-21
  • 打赏
  • 举报
回复
对一个变量的声明可做多次,而定义只能有一次。如果在某个函数中用到了未经定义的变量就会在连接时出错;同样对某一变量做重复定义也会在连接时报错。

在C.h中声明 extern int i;
在A.CPP文件中定义 int i = 1;
并#include <C.h>
Basin_Fish 2005-11-21
  • 打赏
  • 举报
回复
重复定义吧~怎么能通过呢?
ma100 2005-11-21
  • 打赏
  • 举报
回复
楼上的楼上是没选 build all
JohnTitor 2005-11-21
  • 打赏
  • 举报
回复
汗一下楼上
zkk520777 2005-11-21
  • 打赏
  • 举报
回复
我在vc 6.0 用MFC构造一个框架,开始编译通不过
但是采用下列方法就可以通过了~~~~~~~~~~~~~~~~~~~~~~~~~~~~
先把一个文件的int i(或a.cpp或b.cpp的) 屏蔽掉,
编译一变 然后再取消 屏蔽,再编译一遍,就可以通过了~
JohnTitor 2005-11-21
  • 打赏
  • 举报
回复
连接不过
A.obj 和B.obj重复定义了a
orange017 2005-11-21
  • 打赏
  • 举报
回复
在一个完整的工程中,应该是只有一个文件中有相应的文件定义,比如说在1.cpp中有int a=1;
在其他的文件中只能是extern int a;或者是其他文件中:static ina a=1;(静态的变量,只能供本文件使用),要不是的话,会出现重复定义变量的错误!!!
feto 2005-11-21
  • 打赏
  • 举报
回复
连接不过,符号重定义错误
ma100 2005-11-21
  • 打赏
  • 举报
回复
无法编译
oosky2004 2005-11-21
  • 打赏
  • 举报
回复
我等待高人来回答。
不确定自己的大案。

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧