VC环境下头文件包含
来源:互联网 发布:oracle数据库设计规范 编辑:程序博客网 时间:2024/06/02 20:49
头文件包含(#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环境下头文件包含
- VC环境下的头文件包含
- VC环境下的头文件包含
- linux下头文件
- Linux下头文件
- 两个不同的类相互引用的情况下头文件包含问题
- 两个不同的类相互引用的情况下头文件包含问题
- 两个不同的类相互引用的情况下头文件包含问题(转)
- 两个不同的类相互引用的情况下头文件包含问题
- 两个不同的类相互引用的情况下头文件包含问题
- C++中的hash_map——Linux下g++和Windows下VC++下头文件,命名空间
- C++中的hash_map__Linux下g++和Windows下VC++下头文件,命名空间
- linux 环境下头文件声明函数后使用makefile编译文件
- linux下头文件 标准路径
- VS下头文件使用注意事项
- Linux下头文件搜索路径
- Linux下头文件搜索路径
- linux下头文件概述(不定期更新)
- IOS中Json解析的四种方法
- spring web mvc 的特点
- 关于ARM9协处理器CP15及MCR和MRC指令
- WinPE诸多“不能”你晓得不
- PR值计算公式带来的思考
- VC环境下头文件包含
- Struts2文件拦截器
- TCP控制字段标志:URG、ACK、PSH、RST、SYN、FIN
- php mcrypt启用、加密以及解密的方法介绍
- 窗口创建中的 WS_CLIPCHILDREN 和 WS_CLIPSBLINGS风格 细说
- (转)2012移动开发工具盘点:傻瓜式游戏工具引擎
- POJ 1251 Jungle Roads
- 双联开关电路图
- 淘宝数据产品部总监赵昆:数据可视化--挖掘数据背后模式与关联