预编译头文件知识备忘

一直用预编译头文件,但没有作深入的了解,发现同事那发生编译时出现找不到$(IntDir)/$(TargetName).pch文件时,让他把 工程的 预编译头选项中的 "使用预编译头(/Yu)" 修改为 "创建预编译头(/Yc)",又发现Debug编译成功,Release编译失败的问题,请教博强后问题解决。发现自己一直对预编译头文件不了解,摘抄一 些东西补课。

何时需要预编译源代码
预编译代码有助于在开发周期中缩短编译时间,特别是在以下情况中:
总是使用不经常改动的大型代码体。
程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。
用于创建预编译头文件的第一次编译所花费的时间比后面的编译稍长一些。通过包含预编译代码可以加快后面的编译速度。
C 和 C++ 程序都可以预编译。在 C++ 编程中,常见的做法是将类接口信息分别放到不同的头文件中。此后就可以将这些头文件包含在使用该类的程序中。通过预编译这些头文件,可以缩短程序的编译时间。
两种预编译代码方法
使用 Visual C++ 可以预编译任何 C 或 C++ 代码;并不仅限于预编译头文件。
预编译要求先进行规划,但如果预编译的是除简单的头文件之外的源代码,则将大幅度提高编译速度。
如果知道源文件使用一组通用的头文件但包含顺序不同,或者希望将源代码包含在预编译中,则需预编译代码。
如 果使用预编头文件,一定要有一个文件设置为"创建预编译头(/Yc)",通常这个文件是stdafx.cpp,其他cpp文件设置为"使用预编译头 (/Yu)" ,如果工程中没有文件一个文件设为"创建预编译头(/Yc)"而工程设置为"使用预编译头(/Yu)" 则会出现找不到$(IntDir)/$(TargetName).pch文件的问题,如果把每个源文件都设为"创建预编译头(/Yc)"),则会出现 Debug编译成功,Release编译失败,提示"找到一个或多个多重定义的符号" 的问题。
预编译头一定要放在源文件的开头,否则就会出现编译错误,个人认为原因是担心其他的头文件或者宏定义会造成预编头内容的不同。
博强给的一些建议:预编译头中包含的头文件是不经常改动的头文件,所以一般是标准头文件,也就是用#include <…>括起来的内容。在预编译头中一般不要写上using namespace …;这样对于不同命名空间中重名类的使用会带来问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值