zoukankan      html  css  js  c++  java
  • VC环境下的头文件包含(转)

    原文http://blog.sina.com.cn/s/blog_48f93b530100vt8t.html

     头文件包含(#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中常用的宏
  • 相关阅读:
    Mysql5.7主主互备安装配置
    一个简单有效的kubernetes部署案例
    kubernetes应用部署原理
    在线电路编程 (ICP)
    N76E003系统时钟
    说说UART(转)
    串行通信中 同步通信和异步通信的区别及使用情况(转)
    串行通讯与并行通讯区别
    定时器2及输入捕获
    N76E003之定时器3
  • 原文地址:https://www.cnblogs.com/vranger/p/3014387.html
Copyright © 2011-2022 走看看