C语义的预处理 - 宏定义中 # 和 ## 的意义及用法

宏定义基本语法

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;
}
发布了295 篇原创文章 · 获赞 158 · 访问量 101万+

猜你喜欢

转载自blog.csdn.net/kikajack/article/details/90545781