C - 迭代 int 数组时每个宏都会提高"Segmentation fault"



这是我的代码,我尝试迭代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);
};

宏正常

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("%dn", *i);
      }
    return (0);
};

输出

1
2

最新更新