VC环境下的头文件包含

头文件包含(#include)是C/C++中最基本的语法了,不过理解的不深入的话,有时候还是会带来很大的困扰,本文总结一下VC开发环境(以VC2008为例)下包含头文件的用法。


    一、#include <> 与 #include "" 的区别
    网上很流行的一种说法是:前者包含标准头文件,后者包含自己写的头文件。我只能说大多数情况的确是这样,但MSDN给出的标准定义如下:
    #include <> :预处理器首先在编译器提供的标准头文件目录下搜索,然后去编译器设置的包含目录下搜索,之后去附加目录和工程目录等可见目录下搜索;
    #include "" :预处理器首先在包含此语句的文件的同级目录,以及所有带有include此头文件的文件目录下搜索,然后后去附加目录和工程目录,以及标准目录下搜索。
    也就是说,两者最大的区别是预处理器搜索包含头文件的目录顺序不一样,对于VC2008等环境,两者对于头文件的查找,从结果上来说是基本相同的,只是效率的区别。
    上面的解释中提到了一大堆的路径,那么这些路径都是怎么设置的?也就是说,我们可以把头文件放在哪些位置,能够让编译器找到呢?请看下面的讲解。


    二、头文件包含路径
    VC环境下,头文件的包含路径有好几种,因此经常发生从别人那里拿过来的代码编译出错的情况,这是因为环境和工程的配置有差别。VC环境中有以下几种包含路径:
    1、编译器提供的标准头文件路径,比如一些包含windows API头文件的路径,这类尽量使用#include <>;
    2、编译器设置的包含路径,比如通过IDE中“Tools→Options→Directories→Include files”设置的路径,这些包含路径对所有工程有效,一般是一些基础库如boost等的头文件路径,尽量用#include <>;
    3、附加路径,这类路径是通过IDE中“项目属性→配置属性→C/C++→常规→附加包含目录”设置的,对应编译器中/I参数的设置,尽量使用 #include "";
    4、工程路径,指.vcproj工程文件所在的路径,用 #include "";
    5、相对路径,用 #include "";
    6、系统路径,指windows系统环境变量Path中设置的路径,用 #include ""。
    想要成功包含头文件,通过以上几种路径都可以。


    三、相对路径
    相对路径需要重点说一下,很多时候包含头文件会在这个地方产生迷惑。首先相对路径是指相对某个文件而言,可以理解为目标文件相对当前文件的路径。windows下表示相对路径的规则为:
    1、.\ 或 ./  表示当前目录,或同级目录;
    2、..\ 或 ../  表示父目录,或上级目录。
    在VC环境中,我测试的结果是正斜杠和反斜杠为相同效果,因此应该都可以用。
    如果在代码中用#include语句,相对路径是相对于包含该语句的代码文件,或所有包含这个头文件的文件而言;如果在附加路径中设置相对路径,是相对于当前.vcproj工程文件而言。


    四、VC环境预定义宏
    除了以上设置头文件路径的方法外,还可以借助VC环境中预定义的一些宏来设置头文件路径,比如在附加路径设置时使用$(ProjectDir)、$(SolutionDir)等,具体的宏定义信息可以参考我的博文 VC中常用的宏。  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值