gpt4 book ai didi

c - 迭代 int 数组时,每个宏都会引发 "Segmentation fault"

转载 作者:行者123 更新时间:2023-11-30 15:15:48 25 4
gpt4 key购买 nike

这是我的代码,我尝试迭代 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("%d\n", *i);
}
return (0);
};

输出

1
2

关于c - 迭代 int 数组时,每个宏都会引发 "Segmentation fault",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33382290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com