C语言中#和##运算符使用分析

纵饮孤独 提交于 2019-12-06 10:18:28

 

#运算符

#运算符用于在预处理期将宏参数转换为字符串

 

#的转换作用是在预处理期完成的,因此只在宏定义中有效

 

编译器不知道#的转换作用

1 #define STRING(x) #x2 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 }

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!