【0239】从编译原理角度理解 #include “xxx“ 或 #include<xxx> 的实现机制
1. #include<>或#include" ",编译器都作了啥
C/C++开发中,通常将函数的声明、数据类型声明等放在xxx.h
头文件中(比如:test.h
),然后将函数的实现放在对应的xxx.c
源文件中(比如:test.c
)。当我们在.c
源文件中 #include "test.h"
之后,此.c文件中会增加什么内容? 编译器背后会做些什么?
本文将从编译器(预处理阶段)角度,详细讲解#inlcude"xxx.h"
之后,xxx.c
源文件的内容分布,以及实际项目开发中与此类相关的常见报错,及其对应解决方案。
2. demo演示分析
这里有3个文件,分别是:a.h
、b.h
和main.c
。
- 头文件
- a.h
//filename: a.h
typedef struct {