我想将旧的 C++ MFC 项目从 Visual Studio 2005 转移到更新的版本。该项目使用我知道当前 Visual Studio 不再支持的多字节字符集。因此,第一步应该是使项目独立于字符集。一位同事告诉我,如果我_T()
在每个文本周围放置一个宏,我就可以做到这一点。不幸的是,该项目包含大量静态文本,添加宏需要数周时间。
难道没有别的办法了吗?
我想将旧的 C++ MFC 项目从 Visual Studio 2005 转移到更新的版本。该项目使用我知道当前 Visual Studio 不再支持的多字节字符集。因此,第一步应该是使项目独立于字符集。一位同事告诉我,如果我_T()
在每个文本周围放置一个宏,我就可以做到这一点。不幸的是,该项目包含大量静态文本,添加宏需要数周时间。
难道没有别的办法了吗?
不幸的是没有其他办法。您可以尝试使用正则表达式或某些文本编辑器(如sed
.
但就我个人而言,我更愿意手动检查所有代码,以确保没有留下与多字节字符相关的代码:使用_tcslen
而不是strlen
,_TCHAR
而不是char
等。
要考虑的其他变体是使代码显式使用宽字符:wcslen
代替strlen
、wchar_t
代替char
、L"some string"
代替_T("some string")
等。
UPD:我还发现了一些好消息“弃用警告 [MFC support for MBCS deprecated] 已从 VC2017 的 MFC 中删除,我们将在未来的版本中继续提供 MBCS 支持。” (https://blogs.msdn.microsoft.com/vcblog/2013/07/08/mfc-support-for-mbcs-deprecated-in-visual-studio-2013/),所以也许你可以把它留在原样是。