几个C++全局变量的问题

我有一个主CPP名为M.cpp,一个子头文件D.h和子CPP名为D.cpp其中M包含了D.h,D.cpp包含了D.h1.在D.cpp中定义intk(D.h没有声明),M中... 我有一个主CPP名为M.cpp,一个子头文件D.h和子CPP名为D.cpp
其中M包含了D.h,D.cpp包含了D.h

1. 在D.cpp中定义int k(D.h没有声明),M中无法使用该变量
2. 在D.h中定义 int k(D.cpp中没有任何和k有关的)。在M中直接用 k=0;会报错重定义?
3. D.h中定义int k,D.cpp中 int k也会重定义。只有D.h中用extern声明,D.cpp用 int k定义才能在M中正确
使用(D.cpp必须在全局变量声明,如果用static或者在函数内定义同样无法用)。变量的作用域是跟他 声明有关还是定义有关呢?

包含头文件的方式联合不同的源文件,究竟是什么一种组织关系呢?感觉之前学的作用域生存周期都有点被头文件搞乱了
展开
 我来答
winxpliyou
推荐于2016-09-28 · 超过65用户采纳过TA的回答
知道小有建树答主
回答量:267
采纳率:0%
帮助的人:159万
展开全部
这个不是作用于的原因,你定义的都是全局变量,在头文件中定义时当头文件被多个地方include时会定义多个变量,造成编译器在链接时发现多个相同变量,所以报错
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式