Преобразование старого проекта Visual Studio C++ из многобайтового набора символов

Я хотел бы перенести старый проект C++ MFC из Visual Studio 2005 в более новую версию. В проекте используется многобайтовый набор символов, который, как я знаю, больше не поддерживается в текущей Visual Studio. Поэтому первым шагом должно стать создание проекта, независимого от набора символов. Коллега на работе сказал мне, что я могу сделать это, если я положу макрос _T() вокруг каждого текста. К сожалению, проект содержит много статического текста, и добавление макросов может занять несколько недель.

Нет ли другого пути?

1 ответ

Решение

К сожалению, другого пути нет. Вы можете попробовать автоматизировать редактирование текста с помощью регулярных выражений или некоторого текстового редактора, такого как sed,

Но лично я предпочел бы проверить весь код вручную, чтобы не осталось многобайтового кода, связанного с символами: используйте _tcslen вместо strlen, _TCHAR вместо char, так далее.

Другой вариант, который нужно рассмотреть, это сделать код явно использующим widechars: wcslen вместо strlen, wchar_t вместо char, L"some string" вместо _T("some string"), так далее.

UPD: я также нашел несколько хороших новостей: "Предупреждение об устаревании [поддержка MFC для MBCS устарела] было удалено из MFC в VC2017, и мы продолжим предоставлять поддержку MBCS в будущих выпусках". ( https://blogs.msdn.microsoft.com/vcblog/2013/07/08/mfc-support-for-mbcs-deprecated-in-visual-studio-2013/), так что, вероятно, вы можете просто оставить его как есть является.

Другие вопросы по тегам