预编译头文件 - 北冥工作室 - CSDN博客
来源:百度文库 编辑:神马文学网 时间:2024/04/29 01:46:38
预编译头文件 收藏
http://www.886s.com/blog/?p=34
一直用预编译头文件,但没有作深入的了解,发现同事那发生编译时出现找不到$(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 …;这样对于不同命名空间中重名类的使用会带来问题。本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/beingstudio/archive/2010/04/10/5471424.aspx
http://www.886s.com/blog/?p=34
一直用预编译头文件,但没有作深入的了解,发现同事那发生编译时出现找不到$(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 …;这样对于不同命名空间中重名类的使用会带来问题。本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/beingstudio/archive/2010/04/10/5471424.aspx
预编译头文件 - 北冥工作室 - CSDN博客
预编译头文件的问题 - Thinking dynamic - 博客园
毅方协同社区-在查找预编译头指令时遇到意外的文件结尾
使用ANT脚本自动预编译jsp文件
使用ANT脚本自动预编译jsp文件
C和C++头文件大全 - 知而获智 - CSDN博客
程序员应知——也说重构 - 凌云工作室 - CSDN博客
WMA格式文件头解析 - FLY UP - CSDN博客
在VC 中读写INI文件 - 技术收藏 - CSDN博客
javacard mask.c 文件结构 - tccth4091的专栏 - CSDN博客
通过预编译指令提高编译速度
VC++ 中巧妙实现超链接控制 - 欢迎光临中国宏软工作室 - CSDN博客
程序员应知——技术债务 - 凌云工作室 - CSDN博客
程序员应知——我们不是客户 - 凌云工作室 - CSDN博客
程序员应知——学习、思考与分享 - 凌云工作室 - CSDN博客
头文件和CPP文件
MFC头文件
C++头文件一览
VS中def文件对于生成dll和lib文件的作用 - caomiao2006的专栏 - CSDN博客
PHP5薄荷教程[13]文件上传 - 薄荷脑的专栏 - CSDN博客
WMA文件信息格式分析及代码 - benny5609的专栏 - CSDN博客
oracle数据库表空间文件收缩实例 - 47522341的专栏 - CSDN博客
oracle数据库表空间文件收缩实例 - 47522341的专栏 - CSDN博客
在中国能找到的最好的BMP文件结构 - KaKa的专栏 - CSDN博客