预编译头设置

     一直想把学习实践过程和思路记录下来,可总是被懒惰打败。最近看了刘未鹏的那篇《为什么你应该(从现在开始就)写博客》,思想上终于有了阶段性的胜利,呵呵,偶也开始写博了。

    我主要用VC8学习和开发,最近想把常用的源代码做成dll,但是我担心不同版本的VC编译器不能正确链接或调用,而且这些代码还要时不时的修改,之后重新编译成dll,比较麻烦。所以我决定把这些公用源代码(以下“公用源代码”均是指这些常用的需要单独设目录的.cpp文件)放到特定的目录下,需要它们的时候也不用复制到工程目录下只是将它们添加到工程中(Shift+Alt+A)就可以了。这其中遇到的麻烦主要是预编译头的问题。将稳定的重量级的头文件放到预编译头中能够加速使用该预编译头的编译单元的编译速度,这些以前也知道,但只是用默认的工程设置,使用开发环境自动生成的stdafx.h(使用默认预编译头文件名)并将其#include到每个.cpp文件中。现在把stdafx.cpp移动了几次,工程默认的设置不再起作用了,而且现在是公用源代码要放到非工程目录下,也不知道将来用到它们的工程的预编译头中需要什么头文件,而且它们包含的stdafx.h要放到哪个目录下呢。google到Fractal eXtreme:Precompiled headers这篇文章,经测试总结如下,也可能不够准确方法不够好。

    第一,源文件包含预编译头文件不能含有诸如"../stdafx.h"之类相对路径而只能是#include "stdafx.h"或#include <stdafx.h>。

    第二,VC8中Project->xxxxxx Properties->Configuration Properties->C/C++->Precompiled Headers设置预编译头时,属性页对话框中的当前值对应的是Solution Explorer中选中的文件,也就是说要Solution Explorer和属性页对话框配合着来设置。这个操作我以前一直没弄明白。

    第三,公用源代码中#include "stdafx.h",其目录下不放stdafx.h和stdafx.cpp,因为不知道将来添加它们的工程需要什么预编译头。需要公用源代码的工程在其目录下创建stdafx.cpp,Include目录下放stdafx.h,这样公用源代码和工程都能找到stdafx.h。

    此外,通过这一次的练习明白了#include "...."是指编译器优先从include语句所在文件的目录下开始查找而不是当前工程目录。

    第一篇博文,重写了三次才发,呵呵。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值