我有一个阵列的10个元素。将在该元素上调用任意函数。C宏在一个范围内运行循环
每个任意的功能可以
- 操作单个元件上,或者
- 相同的功能将在所有元素进行操作。
我有各种功能遵循这种模式。
我试图做到这一点:
#define ITERATE_ALL10(IDX) (##IDX = 0; ##IDX < 10; ##IDX++)
int arbitrary_fx(int *some_arr, int id) {
int i;
if (id == ID_ALL) {
for (ITERATE_ALL10(i)) {
arbitrary_fx_helper(some_arr[id]);
}
}
else {
arbitrary_fx_helper(some_arr[id]);
}
}
我无法弄清楚如何修复错误:
expected ';' before ')' token
和
expected expression before ')' token
我做了什么错误?有没有更好的方法来实现我想要的?
为什么使用令牌粘贴操作符?这不是必需的。 – fuz
从宏定义中删除括号或从宏调用周围删除括号。 –
你想要'#define ITERATE_ALL10(IDX)IDX = 0; IDX <10; IDX ++'? – BLUEPIXY