☰
C语言 6——编译预处理
2026/10/6 7:36:02 网站建设 项目流程

宏定义和调用

无参数的宏定义(宏常量)

如果在程序中大量使用到了某个值,那么为了方便管理,我们可以将其定义为:const int NUM = 100;但如果我们使用NUM定义一个数组,在不支持C99标准的编译器上是不支持的,因为NUM不是一个编译期常量,如果想到了一个编译器常量,那么可以使用:#define NUM 100

在编译预处理时,将程序中在该语句以后出现的所有的NUM都用100代替。这种方法使用户能以一个简单的名字代替一个长的字符串,在预编译时将宏名替换成字符串的过程称为“宏展开”。宏定义,只在宏定义的文件中起作用

宏名一般大写,以便于与变量区分

宏定义可以是常数、表达式等

宏定义不做语法检查,只有在编译被宏展开后的源程序才会报错

宏定义不是C语言,不在行末加分号

宏名有效范围从定义到本源文件结束

可以用#undef 命令种植宏定义的作用域

在宏定义中,可以引用已定义的宏名

NUM不能被赋值

带参数的宏定义(宏函数)

在项目中,经常把一些短小而又频繁使用的函数写成宏函数。宏通过使用参数,可以创建外形和作用都与函数类似的类函数宏。宏的参数也用圆括号括起来

eg:#define SUM(x,y) (x + y) (带参数的宏定义一般会加上括号,防止运算的优先级别导致代码出错,因为宏定义展开是将内容原封不动的替换)

文件包含处理

文件包含处理

“文件包含处理”是指一个源文件可以将另外一个文件的全部内容包含进来。C语言提供了#include 命令用来实现“文件包含”的操作

#include<>和#include""区别

“” 表示系统先在file1.c所在的当前目录找file1.h,如果找不到,再按系统指定的目录检索

<>表示系统直接按系统指定的目录检索

注意:

1.#include<>常用于包含库函数的头文件

2.#include""常用于包含自定义的头文件

3.理论上#include 可以包含任意格式的文件(.c .h等),但一般用于头文件的包含

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询