打印
[技术手册]

#include预编译指令

[复制链接]
713|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
szt1993|  楼主 | 2024-8-15 09:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
众所周知#include“xxx.h”的作用是用来包含头文件的,作用是能够调用头文件中的各类枚举/结构体/函数定义等。那么一个C文件是如何通过#include“xxx.h”文件就能编译到那些定义呢?那就要从编译器眼中的#include指令说起。

长话短说,大家可以把#include“xxx.h”看成是文本的展开,简而言之就是通过该指令把h文件里的内容进行了展开。如下范例所示,我们定义一个H文件

//这是一个命名为test.h的H文件
#ifndef TEST_H
#define TEST_H

typedef enum
{
Test_item_1,
Test_item_2,
Test_item_3
}e_Test;
#endif
//这是一个命名为test.c的c文件
//为了调用枚举e_Test,所以需要调用test.h头文件
//在程序猿们的眼中,这是一个h文件被调用的样子
#include "test.h"

void func1()
{
....
}
//在编译器的眼中,#include调用H文件其实是文本的展开
//这也是为什么很多头文件的开头都是先来一句#ifndef,否则在同一H文件被多处调用的时候,该文件中的定义就会被重复编译,引起报错
#ifndef TEST_H
#define TEST_H

typedef enum
{
Test_item_1,
Test_item_2,
Test_item_3
}e_Test;
#endif

void func1()
{
....
}

使用特权

评论回复
沙发
小小蚂蚁举千斤| | 2024-8-15 13:25 | 只看该作者
#include用来标注头文件的指令

使用特权

评论回复
板凳
中国龙芯CDX| | 2024-8-20 15:39 | 只看该作者
#include“xxx.h”看成是文本的展开,就是通过该指令把h文件里的内容进行了展开

使用特权

评论回复
地板
小夏天的大西瓜| | 2024-8-20 16:25 | 只看该作者
#include“xxx.h”其实就是头文件调用的包含

使用特权

评论回复
5
szt1993|  楼主 | 2024-8-28 08:16 | 只看该作者
小夏天的大西瓜 发表于 2024-8-20 16:25
#include“xxx.h”其实就是头文件调用的包含

其实感觉各种语言都是非常接近生活的思维模式进行开发

使用特权

评论回复
6
AdaMaYun| | 2024-9-6 08:24 | 只看该作者
其实内层就是头文件的调用

使用特权

评论回复
7
jf101| | 2024-9-17 21:22 | 只看该作者
其实就是调用关系的嵌套

使用特权

评论回复
8
星辰大海不退缩| | 2024-9-20 14:35 | 只看该作者
#include预编译就是头文件的包含关系

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

283

主题

2334

帖子

5

粉丝