为什么这个函数在 Windows 上会崩溃,而在 Linux 上却很好用?
我发现问题出在 line printf("%d ..... %s", i < count ? i : 0 , string);
,因为如果我尝试“test”而不是参数字符串,菜单会很好。我怀疑我正在尝试访问字符串索引之外的元素,但它只发生在 Windows 上,Linux 下没有分段错误信号。
void menu(int count, ...) {
va_list listPointer;
va_start(listPointer, count);
for(int i = 1; i <= count; i++) {
char *string = va_arg(listPointer, char*);
printf("\n%d ..... %s", i < count ? i : 0 , string);
}
va_end(listPointer);
}
有什么办法可以防止这种情况发生吗?谢谢你的时间。
编辑:我用于在 linux 上运行的编译器是 gcc。但我需要在 Windows (mingw) 下运行它。我对菜单的调用menu(3, "option1", "option", "option3");
在代码中只有一次。