哪里显示出你重复定义了?
intkk;//全局变量声明
intmain(……)
{
kk=2;//对kk进行定义
}
你没有重复定义,一个是全局变量一个是局部变量。
因为有 ifndef这个控制,会检查重复定义的,如果前面定义了就不会再定义一遍
如果不是相互包含,那么问题不大。
如果包含了,不同编译器的宽容度不一样,这种问题没什么好纠结的
像我在VS下,楼主这样的连编译都过不了
全局变量如果用static限定,那就是具有内部链接,只在文件内有效。如果不用static限定,那就具有外部链接,对别的文件(当然是同一工程的最终链接到一起的)可见。
这个问题涉及到变量的作用于问题,c语言规定,变量的作用于从变量声明的地方开始,到本文键结束为止。
这跟编译器版本有关,你的编译器并不支持新的c标准,建议用vc或者vs
在c语言中可以有多个声明,不会报错。但是要是在C++中会报错
你把main.h中的#ifdef和#endif去掉估计就会出错了
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。