在我的应用程序中(可以使用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"