头文件定义全局变量的问题

地狱领主 2018-11-07 03:41:40
转:https://blog.csdn.net/liu_qiqi/article/details/9120823 我的问题是,如果是两个未初始化的static 全局变量是啥情况,如果是两个未初始化全局变量又是什么结果,编译都不会出问题,就看是不是同一块内存了,有时间验证一下。
...全文
222 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Acuity. 2018-11-26
  • 打赏
  • 举报
回复
头文件只放声明!源文件放定义!
worldy 2018-11-08
  • 打赏
  • 举报
回复
static 类型的全局变量可以在头文件中定义 如果非static的全局变量必须在c或cpp中定义,然后在头文件中,加入extern向外部声明 cpp中 int a; .h中 extern int a;
地狱领主 2018-11-07
  • 打赏
  • 举报
回复
引用 1 楼 gongjingjing0901 的回复:
刚拿vc实测了下,不加static,不管是否初始化,都是在链接的时候报重定义错误,如果加了static, 不管是否初始化,编译链接都没问题,只是不同的源文件占用不同的内存,也就是说已经是两个不同的static全局变量了。
我又用gcc编译环境测了下,区别在于gcc如果没初始化,不加static也不会报错
地狱领主 2018-11-07
  • 打赏
  • 举报
回复
刚拿vc实测了下,不加static,不管是否初始化,都是在链接的时候报重定义错误,如果加了static, 不管是否初始化,编译链接都没问题,只是不同的源文件占用不同的内存,也就是说已经是两个不同的static全局变量了。

1,068

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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