【发布时间】:2020-06-14 14:39:06
【问题描述】:
我正在尝试使用 SDL 用 C 语言创建游戏。经过一段时间的调试,我在 SDL_Init 发现了一个错误:
#include <SDL2/SDL_ttf.h>
int main(void) {
printf("Init attempt\n");
if (SDL_Init(SDL_INIT_EVERYTHING) != 0) {
fprintf(stderr, "Failed at SDL init: %s\n", SDL_GetError());
fflush(stderr);
fflush(stdout);
exit(EXIT_FAILURE);
}
printf("Init success\n");
return EXIT_SUCCESS;
}
输出如下:
Init attempt
不知何故,写入函数中的 fprintf 正在执行。
我使用的 gcc 命令是:
gcc -Wextra -Wall -pedantic program.c -lpthread -lSDL2 -lSDL2_ttf
注意:如果我使用 g++,一切正常。但是,我必须使用 gcc。
有没有办法修复错误?
【问题讨论】:
-
在退出前刷新标准错误?并从 SDL_GetError 记录错误
-
也许将代码简化为一个可以编译但运行时失败的最小示例。也就是说,没有
...也没有frpintf拼写错误。 -
好的,感谢您的帮助。完成后我会更新问题
-
'write' 是一个你正在重新定义的操作系统函数(它是未定义的行为)
-
哦,好吧,这很有意义。这真的让我很困惑:D 问题的原因是音频子系统的初始化。