今天经过同学指点并实践之后才发现,其实不是这样的,从中受益颇多:
c++编译的时候实际上只编译源文件,而不编译头文件;编译源文件的时候实际上是 在#include <>或者#include " "的地方,把包含的头文件中的
代码直接拷贝到源文件中进行编译,如果没有#include一个头文件,则在这个头文件中随便写什么东西都可以如在test.h头文件中:
#include "../chang/chang01.h"
namespace changchang {
int a;
在test.cpp中:
#include <iostream>
//#include <test.h>
using namespace std;
void main()
{
}
在这里,如果在test.cpp中注释掉包含test.h的语句,则编译不会报错顺利通过,如果不注释掉,则因为包含头文件时候,在这行包含语句的地方会
把头文件中所有的东西拷贝到这里进行编译,而头文件中又是各种乱七八糟的不符合语法的东西,所以就会报错。
在这里学到的东西就是:
1. c++实际上是只编译源文件的
2. c++源文件中在包含头文件的地方,将被包含头文件中的代码全部拷贝进去进行编译;
3. 包含头文件是有顺序的,因为包含头文件的顺序意味着该头文件在源文件进行展开的顺序。
本文深入探讨了C++编译过程中的头文件与源文件交互机制,揭示了头文件并非只用于定义,而是源文件编译过程中实际被包含的内容。通过实例演示了头文件顺序对编译的影响,并强调了C++实际只编译源文件的核心原理。
1万+

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



