宏定义基本语法
C 语言中,所有预定义的宏,都会在预处理阶段进行替换。宏定义的语法为:
#define 宏名 字符串
简单宏定义
下面的示例中,预处理后,所有出现 MAX 的位置都会被替换为 100:
#include <stdio.h>
#define MAX 100
int main() {
printf("MAX is: %d\n", MAX);
return 0;
}
宏定义中使用变量
#include <stdio.h>
#define CHANGE(x) (x * x)
int main() {
printf("CHANGE(10) is: %d\n", CHANGE(10));
return 0;
}
宏定义中使用 #
#
表示字符串化,单纯的使传过来的变量变成字符串。
#include <stdio.h>
#define CHANGE(x) #x
int main() {
printf(CHANGE(xyz));
return 0;
}
宏定义中使用 ##
##
是普通的链接符号,表示单纯的链接前后的字符串。因为是在预处理阶段替换完成的,可以间接的使用变量。
#include <stdio.h>
#define DAY(x) day ## x
int main() {
int day1 = 11;
int day2 = 22;
printf("day is:%d\n", DAY(1));
return 0;
}