【发布时间】:2015-09-13 16:54:08
【问题描述】:
每次扩展宏时我都尝试使用唯一的变量名,但我无法提出解决方案
我有类似这样的代码
#define _each(results,arr,i,v, f)\
for (i=0;i<len(arr);i++){\
v = arr[i];\
f\
}
我想为 I 和 V 分配一个唯一的变量名。
所以当它们被扩展时,我得到了
for(i1=0;i<len(arr);i++){ // first expansion
v = arr[i1];
// dostuff
}
for(i2=0;i<len(arr);i++){
v = arr[i2];
// do stuff
}
我试过__Counter__,但我不知道如何重用变量
#define m(var1,var2) {\ // example calling use m(i,v)
var1 ##__COUNTER__ ;\ // prints i1
row = array[var1];\ // prints i, need i1
row = array[var1 ##__COUNTER__##]; // prints i2.. i need i1
如果有道理的话..
我需要增加变量名,因为我有一个嵌套宏的情况!
【问题讨论】:
-
由于
i和v是宏的参数,每次使用时只需使用不同的名称即可。所以你可以称之为嵌套:_each(results, arr, i, v_i, _each(results, arr, j, v_j))
标签: c c-preprocessor c99