标签:clu include 宏定义 struct main 编译器 hello strong 标识符
#运算符
#运算符用于在预处理期将宏参数转换为字符串
#的转换作用是在预处理期完成的,因此只在宏定义中有效
编译器不知道#的转换作用
1 #define STRING(x) #x
2 printf("%s\n",STRING(Hello World!));
##运算符
##运算符用于在预处理期粘连两个标识符
##的连接作用是在预处理期完成的,因此只在宏定义中有效
编译器不知道##的连接作用
1 #include<stdio.h>
2 #define STRUCT(type) typedef struct _tag_##type type; 3 struct _tag_##type
4 STRUCT(Student)
5 {
6 char *name;
7 int id;
8 }
9
10 int main()
11 {
12 Student s1;
13 Student s2;
14 s1.name = "s1";
15 s1.id = 0;
16 s2.name="s2";
17 s2.id = 1;
18 printf("s1.name = %s\n",s1.name);
19 printf("s1.id = %d\n",s1.id);
20 printf("s2.name = %s\n",s2.name);
21 printf("s2.id = %d\n",s2.id);
22 return 0;
24 }
标签:clu include 宏定义 struct main 编译器 hello strong 标识符
原文地址:https://www.cnblogs.com/liuhaiqing/p/11976966.html