从多字节字符集转换旧 Visual Studio C++ 项目
Convert old Visual Studio C++ project from multibyte character set
我想将一个旧的 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: 我也发现了一些好消息 "The deprecation warning [MFC support for MBCS deprecated] has been removed from MFC in VC2017 and we will continue to provide MBCS support in future releases." (https://blogs.msdn.microsoft.com/vcblog/2013/07/08/mfc-support-for-mbcs-deprecated-in-visual-studio-2013/),所以你可以保持原样。
我想将一个旧的 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: 我也发现了一些好消息 "The deprecation warning [MFC support for MBCS deprecated] has been removed from MFC in VC2017 and we will continue to provide MBCS support in future releases." (https://blogs.msdn.microsoft.com/vcblog/2013/07/08/mfc-support-for-mbcs-deprecated-in-visual-studio-2013/),所以你可以保持原样。