如何在Visual Studio中处理Unicode和非Unicode项目的混合
How to deal with a mix of unicode- and non-unicode projects in Visual Studio
序言:我知道Microsoft使用的术语"Unicode"与Microsoft世界之外的术语"Unicode"不一致。当我在下面使用"Unicode"时,我的意思是"UCS2在Windows中使用的"和Visual Studio构建设置的上下文中。
随着即将到来的Visual Studio 2013,Microsoft终于逐步淘汰了MBCS版本。这就是促使我修复我们的代码库以进入 21 世纪的原因,并为我们使用 win32 和 MFC 的所有代码切换到 Unicode 构建。但是,我们使用一些可移植的外部库,不使用任何特定于 Windows 的内容,并且使用 MBCS 设置。我并不期待识别这些库和我们自己的代码之间的每一个交互点,并处理 WideCharToMultiByte()、ATL 转换宏和无处不在的配偶。
所以我的问题是:处理混合 mbcs/Unicode 构建的最佳实践是什么?是否有任何指导文档或示例应用程序?
我希望有一种更好的方法,而不是必须为各种库中使用的所有类型定义我自己的字符串类型:)
从您的描述来看,您似乎拥有这些库。
我会将它们更改为使用"使用通用文本映射"http://msdn.microsoft.com/en-us/library/7dzey6h6.aspx这样,您就可以使用 UNICODE 和为 Windows 定义的_UNICODE编译它们,而在其他系统上无需编译。
不过,您将不得不编写类似您自己的tchar.h的东西(但非常微不足道,例如,只有一堆ifdefs将_tprintf映射到wprintf/printf)。
相关文章:
- 如何将模板和非模板函数放在一个文件中
- 在自定义 std::vector-like 容器中处理指针和非指针模板类型的最佳方法是什么?
- 一个模板方法,用于同时接受常量和非常量参数
- C++ 常量正确性/缺少支持常量和非常量实例的类的常量构造函数
- C++,如何使用常量对象和非常量对象进行比较?
- 返回引用实例和非引用实例(return mystr & vs mystr)之间的区别是什么?
- 避免易失性和非易失性成员函数的代码重复
- 修改和非修改 putback() 之间的区别
- GCC 和非命名空间范围内的显式专用化
- 常量和非常量 getter 具有相同的名称
- ADL 和非类型模板参数
- 处理一般情况混合类型和非类型的可变参数模板
- C++模板和非模板函数之间的重载解析
- 如何在单个模板调用中传递const_iterator和非const迭代器
- 获取模板以匹配常量 T* 和非常量 T* 的不同序列
- 是否可以有一个模板函数,可以将向量和非向量类型都作为参数
- 如何组合切片、模板和非派生类
- 常量和非常量类型的相同模板专用化
- 使用指针向量和非指针向量有什么区别
- 如何在Visual Studio中处理Unicode和非Unicode项目的混合