这是我的意思的一个令人头疼的例子:
我们有一个多平台项目,主要使用 Unicode 字符串将文本呈现到屏幕上。在 VC++ 中的 windows 上,行:
swprintf(swWideDest, LEN, L"%s is a wide string", swSomeWideString);
编译良好并将宽字符串打印到另一个宽字符串中。但是,这应该是:
swprintf(swWideDest, LEN, L"%ls is a wide string", swSomeWideString);
如果不将 '%s' 替换为 '%ls',这将无法在其他平台上运行。因为在我们的 Windows 环境中进行测试更容易、更快,而且调试起来也简单得多。这些错误很容易被忽视。
我知道最好的解决方案是首先编写正确的代码,但在压力下会犯一些简单的错误,在这种特殊情况下,错误很容易在很长一段时间内被忽视。
我怀疑这种错误有很多变化,我们还没有享受到。
有没有人有找到这些错误的好方法?
: D