C 语言的宏替换由 预处理器(Preprocessor) 负责,它会在 编译前 进行文本替换。
基本使用
#include <stdio.h>
#define PI 3.14159 // 宏定义
int main() {
printf("PI = %f\n", PI);
return 0;
}
预处理后的代码
#include <stdio.h>
int main() {
printf("PI = %f\n", 3.14159);
return 0;
}
PI
被预处理器替换为 3.14159
,这发生在预编译阶段。
宏替换的高级用法
(1)带参数的宏
#define SQUARE(x) ((x) * (x))
int main() {
printf("5² = %d\n", SQUARE(5)); // 25
}
预处理后:
printf("5² = %d\n", ((5) * (5))); // 25
(2)字符串拼接
#define STR(x) #x
printf("%s\n", STR(Hello)); // "Hello"
预处理后:
printf("%s\n", "Hello");
(3)拼接标识符
#define CONCAT(a, b) a##b
int CONCAT(num, 1) = 10; // 等价于 int num1 = 10;
预处理后:
int num1 = 10;
THE END
暂无评论内容