C++:A2W宏已弃用x64 - 替代方案?
问题描述:
我正在使用PVS-studio将程序从x86转换为x64。当在PVS-Studio中运行分析我为每一个使用atlconv.h定义的A2W宏以下64相关的警告的执行:C++:A2W宏已弃用x64 - 替代方案?
V303 The function 'lstrlen' is deprecated in the Win64 system. It is safer to use the 'wcslen' function.
V104 Implicit conversion of '_convert' to memsize type in an arithmetic expression: _convert * sizeof (WCHAR)
V107 Implicit type conversion third argument '_convert * sizeof (WCHAR)' of function 'AtlW2AHelper' to 32-bit type.
由于atlconv是ouside我够不着,我应该简单地忽略这些警告或者在x64上执行A2W宏的首选方式是什么?
答
如果这有助于任何人,我确实使用CStringW构造函数解决它。
答
我相信这些ATL 3.0宏已被弃用。 由于ATL 7.0新的转换类可用。 http://msdn.microsoft.com/EN-US/library/87zae4a3(v=VS.120,d=hv.2).aspx
在大多数情况下,它将足以将A2W宏替换为CA2W类。
+0
谢谢,这是我不知道的有趣信息!正如我上面写的前面我通过CStringT()构造函数解决它,但这是很好知道关于。 – 10100111001
'A2W'在您的项目中有多少种用途?这个宏只是一个黑客。 – Yakk
我认为有数百人。相当大的项目:( – 10100111001
你可以检查宏的实现,并使用更多正确的函数复制黑客攻击,称之为“Ascii2WideHack”,并执行全局搜索和替换? – Yakk