Include头文件的顺序
对于include的头文件来说,如果在文件a.h中声明一个在文件b.h中定义的变量,而不引用b.h。那么要在a.c文件中引用b.h文件,并且要先引用b.h,后引用a.h,否则编译器会报变量类型未声明错误。
这个其实从原理上来说,是因为#include
本来就是一个预编译指令,在预编译阶段,编译器会将include引入的文件直接进行原封不动的替换,也就是说在得到汇编文件之前,cpp文件中就已经没有#include
、#define
等语句了,有的是指定的文件内容。
双引号""和尖括号<>的区别
编译器预处理阶段查找头文件的路径不一样。
双引号和尖括号都包含的是(先找1再找2):
1.编译器设置的头文件路径(在使用g++
等编译器时可使用-I
参数显式指定搜索路径)
2.系统变量CPLUS_INCLUDE_PATH/C_INCLUDE_PATH指定的头文件路径
双引号在除上述路径外,会优先查找当前文件所在路径的头文件,所以也经常可以看到在使用双引号引入头文件时,使用相对路径,比如.
、..
等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)