1

为什么这个函数在 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");在代码中只有一次。

4

0 回答 0