请问,头文件的常量定义问题

shawnshine 2003-08-19 04:53:17
aa.hpp,被b.cpp和c.cpp包含
我把一些常量的定义放在aa.hpp,譬如 const int i = 1;
是不是该在aa.hpp里面写成externt const int i;
然后定义一个aa.cpp,里面写const int i = 1;这样?
我知道变量是这样,不过常量也是这样吗?为什么?
...全文
282 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
mybcsdn 2003-08-26
  • 打赏
  • 举报
回复
楼主的意思只是想定义一些常量在某头文件中,然后在多个CPP文件中包含该头文件而已,用我的办法就能作到呀.
shawnshine 2003-08-22
  • 打赏
  • 举报
回复
该是怎样解释啊?
shawnshine 2003-08-19
  • 打赏
  • 举报
回复
楼上说的不对吧?#ifndef只是为了避免在同一个文件里面定义多次头文件而已啊。
mybcsdn 2003-08-19
  • 打赏
  • 举报
回复
如果你想定义全局的常量,在头文件中加上一些预处理即可,如:
//a.h

#ifndef A_H_
#define A_H_

const int i = 1;
....

#endif

然后头文件a.h就可以在多个CPP中包含了.
shawnshine 2003-08-19
  • 打赏
  • 举报
回复
那楼上的意思是否在hpp文件里面写成const int i = 1;这样是不好呢
是否该改为extern const int i;?在对应头文件的cpp里面再定义
tomsx 2003-08-19
  • 打赏
  • 举报
回复 1
常量默认是内部联接的,加上extern就成了外部联接,在一个头文件里要定义同时要初始化一个常量(extern const int i=1;)在用到它的文件里要进行声明(extern const int i;)这样在这个文件里就可以使用它了,不会重复定义,不会在用到头文件的文件里产成副本,真正的定义就是在头文件里,包含它的文件只是使用它。我觉得是这样的。
shawnshine 2003-08-19
  • 打赏
  • 举报
回复 1
楼上可能不明白我的意思,我是说多个文件用到这个头文件定义的常量的时候,会不会出现这个重复定义的问题。
我不知道是不是要加extern,然后在对应头文件的cpp文件中真正定义。
bigbigbigsoft 2003-08-19
  • 打赏
  • 举报
回复
//在aa.h中定义
#define CONST_VALUE_1 1

//在c.cpp中
#include "aa.h"
//就可以用CONST_VALUE_1
shawnshine 2003-08-19
  • 打赏
  • 举报
回复
是的,可是常量呢?我不明白常量也不行么?
jack_wq 2003-08-19
  • 打赏
  • 举报
回复
最好不要定义全局变量
最好更不要把变量定义在头文件中!
这是编程的禁忌!

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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