首页 > 解决方案 > SDL_Log 似乎不支持 %g 和 %e 说明符

问题描述

我将 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++sdlsdl-2

解决方案


SDL_Log代表SDL_vsnprintf. 有三种可能:

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

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

#elif defined(HAVE_VSNPRINTF)

这种情况代表编译器vsnprintf是否在编译时定义了该符号的实现。VS2015 似乎有 %g 说明符,我假设 VS2013 也是如此。您可以自己简单地检查一下。

#else

我认为你处于这种情况。
这使用 SDL 中的自定义实现。这确实缺乏对 %g 修饰符的支持,但您可以自己添加它(并提交拉取请求)。


推荐阅读