Серия Pragmatic имеет две из лучших книг, которые я прочитал, чтобы помочь получить Вашу голову вокруг управления версиями. У них есть версии для SVN и CVS. Мне действительно нравятся их главы по тегам и ответвлениям.
Для всего нового программного обеспечения вы должны определить UNICODE и напрямую использовать wchar_t. Использование ANSI-перемешиваний снова будет вас преследовать.
Вам следует просто использовать wchar_t и широкие версии всех функций CRT (например, wcscmp вместо strcmp). Макросы TEXT, TCHAR и т. Д. Существуют только в том случае, если ваш код должен работать как в среде ANSI, так и в среде UNICODE, в чем, как мне кажется, код редко нуждается.
Когда вы создаете новое приложение Windows с помощью Visual Studio, UNICODE определяется автоматически, и wchar_t будет работать как встроенный.
Краткий ответ: гибридная инфраструктура с типом TCHAR
, макросом _TEXT ()
и различными _t *
функции (на ум приходит _tcscpy
) - это возврат к тем временам, когда у Microsoft сосуществовали две платформы:
Строковое представление здесь означает, что все API Windows, которые ожидали или возвращали строку в ваше приложение использует то или иное представление для этих строк. COM вносил еще больше путаницы, поскольку он был доступен на обеих платформах - и ожидал, что строки Unicode будут на обеих!
В те старые времена вам было рекомендовано писать «переносимый» код: вас проинструктировали использовать гибридную инфраструктуру для ваших строк так что вы можете скомпилировать для обеих моделей, просто определив / отменив определение UNICODE и / или _UNICODE для вашего приложения.
Поскольку строка Windows9x больше не актуальна (в любом случае для подавляющего большинства приложений), вы можете спокойно игнорировать мир ANSI и напрямую использовать строки Unicode.
Остерегайтесь, однако, что Unicode имеет сегодня несколько представлений: как указано выше, соглашение Unicode, подразумеваемое wchar_t, является представлением UCS-2 (все символы закодированы в 16-битных словах). Есть и другие, широко используемые представления, в которых это не обязательно так.
В Windows это wchar_t с кодировкой UTF-16 (2 байта).
Источник: http://www.firstobject.com/wchar_t-string-on-linux- osx-windows.htm
TCHAR меняет свой тип в зависимости от того, определен ли UNICODE, и должен использоваться, когда вам нужен код, который можно скомпилировать для UNICODE и не-UNICODE.
Если вы хотите явно обрабатывать только данные UNICODE, не стесняйтесь использовать wchar_t.