繁体   English   中英

32/64位版本之间的String Format方法一致性

[英]String Format method uniformity between 32/64-bit builds

在我的应用程序中(可以使用Visual Studio 2008将其构建为32位和64位),出于特定目的,我需要将结果输出到调试日志中。 所以我这样做:

BOOL* pbBool = function1();

CString str;
str.Format(L"Line: pbBool=0x%I64X(%d)%s",
    pbBool,
    pbBool ? *pbBool : -1,
    bAddNewLine ? L"\n" : L""
    );

上面的代码适用于64位版本,但对于32位版本,它会使应用程序崩溃。

我假设问题出在“%I64X”中,因为pbBool对于64位版本是64位,对于32位版本是32位。 但是我很好奇,对于“格式”功能是否有一个“统一”说明符,可以对此进行自动调整?

您的代码有两个问题:

  • 使用%I打印指针 -您应该改用%p ,并且
  • 使用%s打印宽字符串 -您应该改用%ls

修改后的格式行应如下所示:

L"Line: pbBool=0x%p(%d)%ls"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM