当前位置:网站首页>全局变量能否放在头文件中定义
全局变量能否放在头文件中定义
2022-04-23 14:01:00 【JokerYourMemory】
今天遇到一个坑,在VS上进行多文件的编译运行的时候,在头文件中定义了全局变量a,该头文件被类的实现CPP和主函数所在的CPP包含且声明extern int a。但是在链接的时候报多重定义的错误。网上看了下,这篇文章给出了一个答案:能不能在头文件中定义全局变量?。总结起来就是,报错的原因就是有两个CPP,各自生成自己的OBJ,那么在查找符号的时候,都能发现对方那里也有一个变量a,那么就报错了。所以,如果你能保证你的头文件只被包含一次,那么可以在其中定义此外链接性的变量,如果无法保证的话,引用作者的话“那么你就任找一个源文件,把这个全局变量定义到这个源文件中,然后新建一个头文件,在里面进行extern 这个变量的声明,最后在需要使用这个全局变量的源文件中include你新建的头文件就OK了”。这种方法如果写起来makefile应该也不难,历来公共的接口、头文件都是放在一起,此用于共享全局变量的头文件放在这里,正常写就好了。
PS:定义的概念,不加extern或者进行了初始化都视为定义。声明只有extern type-name a一种
版权声明
本文为[JokerYourMemory]所创,转载请带上原文链接,感谢
https://blog.csdn.net/m0_38084180/article/details/80500765
边栏推荐
- UML Unified Modeling Language
- Express中间件③(自定义中间件)
- [code analysis (3)] communication efficient learning of deep networks from decentralized data
- Express②(路由)
- 多线程 @Async 线程池
- Logging模块
- 记录一个奇怪的bug:缓存组件跳转之后出现组件复制
- Reading notes: meta matrix factorization for federated rating predictions
- JS 力扣刷题 103. 二叉树的锯齿形层序遍历
- _模_板_
猜你喜欢
随机推荐
Quartus prime hardware experimental development (de2-115 board) experiment 1 CPU instruction calculator design
读了一篇博客,重新理解闭包整理一下
smart-doc + torna生成接口文档
Nacos+AspnetCore+Ocelot实战编码
elmo(BiLSTM-CRF+elmo)(Conll-2003 命名实体识别NER)
美联储数字货币最新进展
request模块
Android interview theme collection
[code analysis (7)] communication efficient learning of deep networks from decentralized data
Autumn recruitment in 2021, salary ranking No
The art of automation
第十五章 软件工程新技术
STM32 learning record 0007 - new project (based on register version)
JMeter pressure test tool
Strange bug of cnpm
SQL数据库
趣谈网络协议
Decentralized Collaborative Learning Framework for Next POI Recommendation
Express ② (routage)
Quartus Prime硬件实验开发(DE2-115板)实验二功能可调综合计时器设计