我有一個陣列的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