![](/img/trans.png)
[英]Using MinGW-Builds to compile a 32-bit exe on a 64-bit system — compiles a 32-bit exe but links against 64-bit DLLs
[英]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.