我有以下代码。
#include <stdio.h>
#include <SDL/SDL.h>
#include <SDL/SDL_thread.h>
#ifdef __MINGW32__
#undef main
#endif
int main (int argc, char **argv)
{
printf ("Kishore\n");
if (SDL_Init (SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER))
{
fprintf (stderr, "SDL: could not able to initialize SDL : %s", SDL_GetError());
exit (1);
}
}
能够毫无问题地编译。但是,当我运行可执行文件时,它没有给出任何输出。 使用的 gcc 命令:
gcc -lSDL test.c -o test.exe
我是否遗漏了什么。
最佳答案
Windows 命令行程序使用 main
入口点并将 stdout
和 stderr
文件句柄(通过 printf 语句)输出到控制台窗口。 Windows GUI 程序使用 WinMain
入口点并且不设置 stdout
和 stderr
文件句柄以转到控制台窗口(正如它们所做的那样未初始化要输出到的控制台窗口),这就是为什么您看不到 printf
语句的输出。
POSIX (Linux/Solaris/BSD/...) 为控制台和 GUI 应用程序使用 main
入口点并设置 stdout
和 stderr
正确,以便它们出现在终端/控制台窗口中。
SDL 是一种跨平台 API,可简化图形程序,因此在 Windows 上它使用 WinMain
入口点,因此它可以创建一个显示图形的窗口,而其后没有控制台窗口. SDL WinMain
调用 main
函数,因此您可以在所有平台上使用 main
入口点。
过去,我发现:
test.exe | cat
工作,但是 YMMV。
关于c - SDL_init() 导致 c 文件不输出任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11865186/