码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-12-03 15:30:18      阅读:107      评论:0      收藏:0      [点我收藏+]

标签: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 }

 

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

标签:clu   include   宏定义   struct   main   编译器   hello   strong   标识符   

原文地址:https://www.cnblogs.com/liuhaiqing/p/11976966.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!