【问题标题】:SDL_Log doesn't seem to support %g and %e specifiersSDL_Log 似乎不支持 %g 和 %e 说明符
【发布时间】:2021-11-11 22:35:03
【问题描述】:

我将 SDL 2.0.12 与 Visual Studio 2013 一起使用,我看到了:

SDL_Log("%f", 1.0); // fine
SDL_Log("%g", 1.0); // no luck; prints blank line

我需要切换到新/旧版本的 SDL 吗?

【问题讨论】:

    标签: c++ visual-c++ sdl sdl-2


    【解决方案1】:

    SDL_Log 代表SDL_vsnprintf。有三种可能:

    #if defined(HAVE_LIBC) && defined(__WATCOMC__)
    

    这似乎检查了 Watcom C 编译器。不适合你。

    #elif defined(HAVE_VSNPRINTF)
    

    如果该符号是在编译时定义的,则此案例将委托给您的编译器对 vsnprintf 的实现。 VS2015 似乎有 %g 说明符,我假设 VS2013 也是如此。您可以自己检查一下。

    #else
    

    我认为您处于这种情况。
    这使用 SDL 中的自定义实现。这确实是lacks support for the %g modifier,但您可以自己添加(并提交拉取请求)。

    【讨论】:

    • 谢谢!所以这是 SDL 人在他们自己的实现中采取顽皮的捷径(然后没有记录它们)的组合,并且也不信任微软对这种方法的实现,最近似乎有充分的理由:stackoverflow.com/questions/34996375/…Bu
    • 似乎我对 SDL 的动机有点错误......他们显然试图完全不依赖 Windows 上的标准库,因为否则 SDL 的用户必须使用相同版本的 Visual 进行编译Studio 作为用于编译 SDL 本身的那个......或类似的东西
    猜你喜欢
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    • 2012-06-02
    • 2020-07-17
    • 1970-01-01
    相关资源
    最近更新 更多