c - SDL_init() 导致 c 文件不输出任何内容

标签 c sdl

我有以下代码。

#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 入口点并将 stdoutstderr 文件句柄(通过 printf 语句)输出到控制台窗口。 Windows GUI 程序使用 WinMain 入口点并且不设置 stdoutstderr 文件句柄以转到控制台窗口(正如它们所做的那样未初始化要输出到的控制台窗口),这就是为什么您看不到 printf 语句的输出。

POSIX (Linux/Solaris/BSD/...) 为控制台和 GUI 应用程序使用 main 入口点并设置 stdoutstderr 正确,以便它们出现在终端/控制台窗口中。

SDL 是一种跨平台 API,可简化图形程序,因此在 Windows 上它使用 WinMain 入口点,因此它可以创建一个显示图形的窗口,而其后没有控制台窗口. SDL WinMain 调用 main 函数,因此您可以在所有平台上使用 main 入口点。

过去,我发现:

test.exe | cat

工作,但是 YMMV。

关于c - SDL_init() 导致 c 文件不输出任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11865186/

相关文章:

c - C 中的 Printf 函数在 while 循环完成之前不打印

c++ - OpenGL 平铺/ block 传输/裁剪

c++ - 我可以像这样混合使用 pimpl 和 C 接口(interface)吗?

c - 长度已知的数组术语 C/C++

C 打印数组数字

c - SDL 和 aalib : No SDL_KEYUP event?

c++ - 跨平台硬件加速 2d C++ 应用程序?

c++ - 我的析构函数每次都被调用

c - 即使分配后,结构指针仍保持为 NULL

c - 如何从文件中读取特定格式的数据?