查看: 532|回复: 0

[C/C++] C/C++中宏定义的使用1.1--#include指令

[复制链接]

0

技术

9

魅力

1

原创

版主

禁止访问

Rank: 7Rank: 7Rank: 7

积分
7734
人气
176
分享
52

最佳新人活跃会员

发表于 2022-11-7 17:12:56 | 显示全部楼层 |阅读模式
【前言】
别问我为什么特别强调了C语言因为,我开始学习C语言了
【什么是宏定义】
相信大家经常在代码中见到以"#"开头的语句,那么这是什么呢?
这就是宏定义,也叫预处理
这些代码会在未编译完成的时候执行,如#include,#define,#pragma
那么我们将会讲解这些宏定义
今天就从include开始吧
【include宏定义】
这个宏定义一般出现在源文件的第一行,用于包含C/C++头文件(.h,.hpp)
它的原理是将所包含的头文件展开至.i文件(预编译文件,使用gcc可以查看),替换掉include指令
例如,我们编写了一个test.h头文件,源码如下:
[C] 纯文本查看 复制代码
#pragma once
#include <stdio.h>


void test(){
    printf("Hello World!");
}

然后我们在test.c中使用它
[C] 纯文本查看 复制代码
#include "test.h"

int main()
{
    test();
}

如果我们是用如下gcc命令
[AppleScript] 纯文本查看 复制代码
gcc -不知道 -不记得

那么就会生成预编译的.i文件,test.i文件内容如下:
[C] 纯文本查看 复制代码
#pragma once
#include <stdio.h> //stdio.h九百多行,就不展开了哈,但是实际上,这里也是会展开的

void test(){
    printf("Hello World!");
}

int main()
{
    test();
}

看看少了点什么?
没错,#include "test.h"不见了,而是展开了!
使用方法:


它的使用方法如下
[C++] 纯文本查看 复制代码
#include <源文件名称>
#include "源文件名称"

那么这两个有什么区别呢?
前者需要安装某个库至相应的IDE才可使用,而后者则需要写出头文件的相对/绝对路径(推荐相对路径)
简单吧
【预告】
下一期:C/C++中宏定义的使用1.1--#define和#undef指令



本帖被以下淘专辑推荐:

小菜鸡一枚~
Gitee主页:https://gitee.com/juruoqwq
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表