C语言 学习 宏命令(预处理) 2025年6月9日14:41:39
宏命令(预处理)
1.宏定义#define 与 取消宏定义#undef
#define 宏名 替换内容 //无类型检查 简单文本替换
举例:
#define PI 3.14159
//这个PI 相当于3.14159
#define MAX(a, b) ((a) > (b) ? (a) : (b))
//这是一个对比a是否大于b如果是 输出 a 反之 b
用括号的重要性:
错误写法
#define SQUARE(x) x * x SQUARE(3 + 1) 会变成 3 + 1 * 3 + 1 → 结果错误
#define MAX a > b ? a : b MAX + 1 会变成 a > b ? a : b + 1,逻辑混乱
#undef
宏名 可以取消之前定义的宏,让宏名失效
取消定义宏举例:
#define min 1234 //创建一个宏定义
int main(){
#ifdef min //判断宏定义是否存在 存在输出提示字
printf(1234);
#endif#undef min //取消一个宏定义#ifdef min //判断宏定义是否存在 存在输出提示字
printf(5554);
#endif
}
2.#include 指令(ai提供)
场景 | 描述 |
---|---|
引入标准库函数 | 如 #include <stdio.h> |
分离项目结构 | 将函数声明放入 .h ,实现放入 .c |
模块化开发 | 各个模块独立编写 .h 和 .c |
宏定义共享 | 将公共宏定义放在 .h 中供多个文件使用 |
条件编译控制 | 结合 #ifdef 控制不同平台功能 |
操作 | 说明 |
---|---|
#include <file.h> | 引入系统头文件 |
#include "file.h" | 引入自定义头文件 |
#ifndef / #define / #endif | 防止头文件被重复包含 |
放置位置 | 通常放在 .c 文件开头 |
不能做什么 | 不能在里面写可执行语句(如 printf() ) |
3.条件编译
指令 | 说明 |
---|---|
#ifdef MACRO | 如果宏 MACRO 已定义 |
#ifndef MACRO | 如果宏 MACRO 未定义 |
#else | 否则 |
#elif | 否则如果(常用于多个条件判断) |
#endif | 结束条件编译块 |
#if (表达式) | 如果表达式为真(支持常量运算) |