【前言】
别问我为什么特别强调了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指令
|