关于C/C++的头文件格式之前就有所了解,今天在看C++的时候再次看到,决定把这个记录下来。
先来看一段代码:
这里include"student.h"不能写成include<student.h>。
原因在于:""首先搜索当前目录,当前目录没有,再搜索头文件的标准目录,<>只搜索头文件的标准目录。
另外还有一个问题,来看一下下面两段代码:
这两段代码都能编译通过。原因是在C++中#include<iostream> using namespace std;为标准写法,为了兼容C仍允许使用原有带.h的头文件的写法,而C语言中无命名空间所以带.h的头文件不必使用“using namespace std;”。
但仍存在一个疑问,
我们将最上面第一个代码中的换成
后运行,
程序蹦错:
想了下发现主要问题出在“student.h”的头文件是自己写非系统的,所以即使你写上“using namespace std;”,编译时只能找到"student.h"文件而没有"student"文件。
而对于“iostream”系统中既有“iostream”文件也有“iostream.h”文件,后者只是为了兼容C,而采用前者时文件中的命名需要用到命名空间而已。
至此,大概对C/C++的头文件的格式能区分得清爽些了。
本文介绍了C/C++中头文件包含的区别,`#include "file"`优先搜索当前目录,然后是标准目录,而`#include <file>`只搜索标准目录。C++中,`#include <iostream>`需配合`using namespace std;`,但自定义头文件如`student.h`不需要此语句,因为它们不涉及命名空间。同时,`iostream.h`是为兼容C而存在的,但在现代C++中应使用`iostream`。
800

被折叠的 条评论
为什么被折叠?



