社区
C++ 语言
帖子详情
项目头文件中的宏重复定义#pragma once无效
守护宣言
2016-10-31 11:25:28
求教各位大大,Vs 2015中VC++的控制台项目新建头文件会自动在首行加#pragma once以防止头文件重复包含,但是我的那个表达式求值的项目在生成时还是出现LNK 200重复定义,这可能是什么原因呢?
...全文
1799
8
打赏
收藏
项目头文件中的宏重复定义#pragma once无效
求教各位大大,Vs 2015中VC++的控制台项目新建头文件会自动在首行加#pragma once以防止头文件重复包含,但是我的那个表达式求值的项目在生成时还是出现LNK 200重复定义,这可能是什么原因呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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只是防止重复编译这个文件
《C深度解析》第二章 C预编译——
宏
定义
、条件编译、
头文件
包含、特殊预编译关键字
课程内容:(1)回顾c预编译(2)
宏
定义
:无
宏
体
宏
、有
宏
体
宏
、带参
宏
、
宏
定义
与复杂表达式。(3)条件编译:#if、#else、#elif #endif、#ifdef和#ifndef、#if与defined、条件编译与配置文件(4)一些特殊的预编译关键字与实际应用:defined、#error、#line、#与##、#
pragma
(5)文件包含:是否只能包含.h文件,<>与区别等。
关于#
pragma
once
#
pragma
once是一个比较常用的C/C++杂注,只要在
头文件
的最开始加入这条杂注,就能够保证
头文件
只被编译一次。 #
pragma
once是编译器相关的,有的编译器支持,有的编译器不支持,具体情况请查看编译器API文档,不过现在大部分编译器都有这个杂注了。 #ifndef,#define,#endif是C/C++语言
中
的
宏
定义
,通过
宏
定义
避免...
C++
头文件
的重
定义
问题以及
头文件
互相包含问题
在C++的
头文件
里,通常通过#
pragma
once与#ifndef两种防止
头文件
二次编译。 有的人将
重复
编译,
重复
包含与
重复
定义
弄混,比如:
定义
一个类,在实例化它之前并不产生内存开销;这与基本类型有所区别。 明明在
头文件
使用了#
pragma
once;#ifndef...#define...#endif,为什么在
头文件
定义
了一个全局变量,还会出现
重复
定义
的错误,为什么
头文件
里的类的
定义
头文件
循环引用验证:#
pragma
once和#ifndef
在一个
项目
中
, 如果两次#include “aaa.h”(比如bbb.h包含了aaa.h,而ccc.h即包含bbb.h又包含aaa.h)就会出错,因为相同的类不能
定义
两次。把aaa.h稍做修改: #ifndef aaa #define aaa class aaa { }; #endif 就可以避免这样的问题。因为当你已经包含过这个文件,_aaa_就会有了
定义
,那么#ifndef的条...
编译时出现
头文件
中
变量
重复
定义
的问题,使用#
pragma
once和
宏
定义
无法解决。原因:
头文件
只能声明变量或者
定义
常量,只有在源文件才能初始化
C++ 语言
64,651
社区成员
250,488
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章