这是我的代码,我尝试迭代int数组并放置它们,如何使它工作?
#include "stdio.h"
#define each(item, array) \
for (int keep = 1, count = 0, size = sizeof(array) / sizeof *(array); keep && count != size; keep = !keep, count++) \
for (item = (array) + count; keep; keep = !keep)
int main(int argc, char **argv) {
int is[] = {1, 2};
each(int i, is) {
puts(i);
}
return (0);
};
答案 0 :(得分:1)
宏可以
each()
循环的调用和正文有问题。
注意item = (array) + count
正在将count
添加到指针(array
转换为&array[0]
),其结果应该是指针。因此int i
应为int *i
。
puts(const char *s)
需要一个字符串,而不是int
。
int main(int argc, char **argv) {
int is[] = {1, 2};
// each(int i, is) {
each(int *i, is) {
// puts(i);
printf("%d\n", *i);
}
return (0);
};
输出
1
2