<2017年6月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

统计

  • 随笔 - 57
  • 文章 - 7
  • 评论 - 0
  • 引用 - 0

常用链接

留言簿

随笔分类

随笔档案

文章分类

文章档案

Blog

Coder 必备技巧

Compiler for Wurq

搜索

  •  

最新评论

阅读排行榜

评论排行榜

【宏定义】静/动态 创建变量
1、利用宏定义 静态创建变量
 1 #define VAR(id) var_##id
 2 
 3 #define _TO_STR(var_name) #var_name
 4 #define TO_STR(var_name) _TO_STR(var_name)
 5 
 6 #define _DEF(def,var,val) def var = val
 7 #define DEF(def,var,val) _DEF(def,VAR(var),val)
 8 // #define AUTO_(def,var,val) def VAR(var) = val //影响可读性
 9 
10 // DEF(def,id,val) => def var_id = val
11 DEF(int, Gbits, 511768840);
12 printf("(%s = %d)\n", TO_STR(VAR(Gbits)),VAR(Gbits));

2、能否利用宏定义 动态创建变量
能否动态创建变量 var_1,var_2, ...,var_n?答案似乎是否定的。
因为宏是在编译期间解析的,因此,宏定义无法在运行期间完成该任务
例子如下:   
1 for (int i = 1; i <=10; i++)
2 {
3     DEF(int, i, i);
4     printf("(%s = %d)\n", TO_STR(VAR(i)), VAR(i));
5 }
因为宏定义在编译期间解析,因此所定义的变量编程var_i,而非var_1,var_2,...var_n.

posted on 2017-04-08 15:16 Wurq 阅读(394) 评论(0)  编辑 收藏 引用 所属分类: 【技术干货】


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理