项目头文件中的宏重复定义#pragma once无效

守护宣言 2016-10-31 11:25:28
求教各位大大,Vs 2015中VC++的控制台项目新建头文件会自动在首行加#pragma once以防止头文件重复包含,但是我的那个表达式求值的项目在生成时还是出现LNK 200重复定义,这可能是什么原因呢?
...全文
1799 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-11-01
  • 打赏
  • 举报
回复
阅读gcc源代码中处理#pragma once相关片断?
小灸舞 2016-11-01
  • 打赏
  • 举报
回复
#pragma once是和文件绑定的,有文件标志,编译时会检查头文件有没有被编译过,而不用进入文件中检查。编译效率会比预处理头方法高,但如果程序中有同一个.h文件的多个副本,一个cpp不慎包含了多个副本.h文件,那么#pragma once对此是失效的,因为他只认文件不认代码。
begodliker 2016-11-01
  • 打赏
  • 举报
回复
表达式求值不能写在头文件中的,除非inline或template
ztenv 版主 2016-11-01
  • 打赏
  • 举报
回复
应该是你代码的原因,不可能无效的。
守护宣言 2016-11-01
  • 打赏
  • 举报
回复
多谢各位的解惑,问题解决了,是我自己作死在头文件里定义了全局变量
ri_aje 2016-11-01
  • 打赏
  • 举报
回复
看代码才能找到原因。
ooolinux 2016-10-31
  • 打赏
  • 举报
回复
有没有变量定义在头文件中? 头文件中可以声明外部变量,也可以定义const常量。
paschen 版主 2016-10-31
  • 打赏
  • 举报
回复
你相同的函数、变量多次定义也会出现重复定义,#pragma once只是防止重复编译这个文件

64,651

社区成员

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

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