c++头文件到底应不应该定义const变量?

leavesword 2015-09-01 08:17:45
c++ primer里讲的const变量定义时默认为文件的局部变量,当头文件中定义了const变量后每个包含该头文件的源文件都有了自己的const变量。
然而如果同一个源文件里包含的两个头文件中定义过相同的const变量,那么程序就不能通过编译。
不知道我有没理解错?平常写代码是否应该避免在头文件里定义常量?

请看下面几个代码文件。
main.cpp

#include <iostream>
#include "header1.h"
#include "header2.h"

int main() {
std::cout << num;
return 0;
}

header1.h

#ifndef HEADER1_H_
#define HEADER1_H_

const int num = 5;

#endif

header2.h

#ifndef HEADER2_H_
#define HEADER2_H_

const int num = 5;

#endif


编译报错:

...全文
275 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2015-09-02
  • 打赏
  • 举报
回复
不要纠结各种常量了,这个世界上唯一不变的就是变化。用API WriteProcessMemory还能修改正运行的其它进程的内存里面的所谓常量呢!
leavesword 2015-09-01
  • 打赏
  • 举报
回复
引用 1 楼 www_adintr_com的回复:
是应该避免使用全局变量,常量定义来能够覆盖它的使用范围就行,如果它真的就是全局的,可以放在名字空间或是加点前缀什么的来避免名字冲突。
弄懂了,谢谢。被书上几句话绕晕了
www_adintr_com 2015-09-01
  • 打赏
  • 举报
回复
是应该避免使用全局变量,常量定义来能够覆盖它的使用范围就行,如果它真的就是全局的,可以放在名字空间或是加点前缀什么的来避免名字冲突。

64,654

社区成员

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

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