1.宏定义
-
作用:用自定义的字符替换一些文本
-
格式:#define 自定义名(大写) 目标替换文本
-
说明:
宏定义时不用 ; 宏定义时不用数字
-
带参宏:(类似函数)
-
格式:#define ADD(a,b) a+b
说明:
-
带参宏只适用于一些简单的操作(不能有循环、递归……)
-
直接替换可能导致代码变长,导致代码区冗胀
-
好处在于,简单的函数用宏替换可以节省函数与函数之间的跳转时间
-
先替换然后计算,要注意优先级的问题
2.头文件包含
-
#include<头文件名字>
-
#include"头文件名字"
-
作用:把头文件内容直接复制到代码前面
上述两者的区别:
-
<>一般表示自带头文件(在指定目录中)
-
""一般表示自己写的头文件(在项目文件夹中,如果在项目文件夹中找不到,则会区系统指定目录寻找)
自定义头文件:
-
在头文件下添加 名字1.h 头文件
-
在原文件下添加 名字1.c 源文件
说明:
-
原文件和头文件的名字要对应
-
名字1.h 头文件 负责()名字1.c 源文件 对应的函数声明、类型定义、宏定义、条件编译等
-
一般在头文件前加 #pragma once 防止头文件重复包含
3.条件编译
-
作用:根据某些条件 判断下面的语句是否编译
格式1:
-
#if #endif
格式2:
-
#ifndef #endif
格式3:
-
#pragma once
4.说明
- 预处理实际上就是:将代码分成几个文件,并联合起来可以执行
- #开头表示预处理命名
- 代码–>预处理–>编译–>可执行文件
- 预处理阶段(删掉注释、宏定义、包含头文件、条件编译)
5.代码实例
头文件-liu.h
(说明:在对应项目下点击添加,选择头文件进行添加)
#pragma once
#include<stdio.h>
void fun();
原文件1-liu.cpp
(说明:在对应项目下添加,选择C++文件,并且名字要与对应的头文件一致)
#include<stdio.h>
void fun()
{
printf("hello world\n");
}
源文件2-任意名字.cpp
(说明:源文件2是主函数所在位置)
#include<stdio.h>
#include"liu.h"
#define HELLO "hello world"
#define ADD(a,b) a+b
int main()
{
fun();
printf("此处用于说明宏替换(宏定义hello world 为HELLO) :%s", HELLO);
printf("\n\n此处用于说明带参宏#define ADD(a,b) a+b的作用:%d", ADD(3, 4));
printf("\n\n此处说明宏替换的#define ADD(3,4)*5的值,其值为%d", ADD(3,4) * 5);
getchar();
return 0;
}