Microsoft 的 将 _stprintf
定义为 swprintf
,如果 _UNICODE
已定义,则 sprintf
未定义。但是这些函数采用不同的参数!在 swprintf
中,第二个参数是缓冲区大小,但 sprintf
没有这个。
有人偷懒吗?如果是这样,这是一个很大的问题。我如何在我的程序中使用 _stprintf
,并让它们在有和没有 _UNICODE
的情况下工作?
最佳答案
你在这里看到了平行进化。 swprintf
是标准 C 的后来者,在发现 (A) 8 位不足以容纳文本并且 (B) 您应该将缓冲区大小与缓冲区一起传递。 TCHAR
是微软统一 ASCII 和 Unicode API 的想法。他们丢球,丢了点 (B)。正确的 TCHAR
解决方案应该是将 _stprintf
定义为 swprintf
或 snprintf
。
解决方案是简单地包装 <tchar.h>
并自己完成。