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.