文章目录
预处理之文件包含
预处理之宏定义
预处理 - 无参宏
宏定义,又称为宏替换,自定义一个宏(要符合标识符的命名规则),用于替换任意数据、标识符或者表达式。
无参宏定义
定义无参宏的基本格式:#define 宏名 宏替换
注意:不能给宏定义的常量赋值
注意:预处理做替换是没有计算功能的,宏名约定俗称都是大写
- 优点:一改全改
带参数宏定义
带参宏定义
定义带参宏的基本格式:#define 宏名(参数表) 宏替换
注意:
宏定义是替换,其在替换完成前并不会计算。
宏定义尽量用大写,使其在程序中容易辨别区分。
宏定义的优缺点
优点:
- 方便程序修改
- 提高程序的运行效率:使用带参函数可完成部分函数调用的功能,既减少了系统开销,又提高了运行效率。
缺点:
- 缺少检测机制(缺少检测机制是因为在预处理过程中不会去判断语法错误,只有在程序编译时才会去判断语法错误)
预处理之文件包含
文件包含的基本格式:
包含系统头文件用<>,只会在系统头文件中找
包含自定义头文件用"",在自定义头文件中找不到就会在系统头文件中找
注意:文件包含允许嵌套,即在一个被包含文件中可以包含其它文件。
演示过程:
头文件的嵌套包含可能会引起头文件的重复包含,从而出现函数重定义,而宏定义语句可以防止头文件重复包含。
#pragma once
是一种预处理指令,用于确保头文件只被编译一次,以防止重复包含。
-
我们先创建一个头文件
tool1.h
,并在文件中写入内容
-
并在
文件包含.c
文件中导入使用
-
我们再创建一个
tool2.h
的头文件,并写入内容 -
注意:因为
tool1.h
中已包含了#include<stdio.h>
,所以在tool2.h
中就不用再写入,可直接使用printf()