首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

代码里如何判断项目是否启用了预编译头

2013-10-29 
代码里怎么判断项目是否启用了预编译头?我想在项目开启的情况下#include stdafx.h没开启就忽略这条[解决

代码里怎么判断项目是否启用了预编译头?
我想在项目开启的情况下#include "stdafx.h"
没开启就忽略这条
[解决办法]
对于预编译,这是我个人的总结:
1.由于单单一个头文件无法编译,所以一般来说预编译头文件都一对应的cpp文件(这个文件里一般只有一个include ),这个文件一般来说第一个被编译,这样就生成了.pch这个经过预编译头。

2.对于单一的编译单元来说,使用预编译头,可以将原来不使用预编译头时的宏展开,include文件包含等时间省去,故缩短了编译时间,提高了编译速度。

[解决办法]
http://msdn.microsoft.com/zh-cn/library/b0084kay(v=vs.110).aspx
貌似没有对应/Yu与/Yc选项的预定义宏。
楼主可以配置两个项目配置,比如Debug对应使用预编译头的设置,再添加一个Debug_NOPRE对应不使用预编译头的设置。

不过……话说,预编译头应该只关乎编译速度,与最后生成的文件无关系吧?楼主实现这个的目的是什么?
[解决办法]

引用:
Quote: 引用:

http://msdn.microsoft.com/zh-cn/library/b0084kay(v=vs.110).aspx
貌似没有对应/Yu与/Yc选项的预定义宏。
楼主可以配置两个项目配置,比如Debug对应使用预编译头的设置,再添加一个Debug_NOPRE对应不使用预编译头的设置。

不过……话说,预编译头应该只关乎编译速度,与最后生成的文件无关系吧?楼主实现这个的目的是什么?

其实是今天写了个类发现的问题,A.h和A.cpp
A.cpp中 #include "A.h"

然后把这个类Copy到一个启用了预编译头文件的项目下时,编译会报错,因为在A.cpp中第一条必须是#include "stdafx.h"

而我写的这个类和项目是无关的,也许Copy到其他没有启用预编译头文件的项目下时就没报错

那么为了正常编译,我每次Copy到一个项目中时都要改,很麻烦,如果有很多库的话,那更麻烦。。。


那你可以考虑一下将声明和定义都放在.h文件里……STL等不都这么干的么?

当然如果能找到一个有效的办法实现你想要的那就更好了~

热点排行