【问题标题】:tchar.h on linuxLinux 上的 tchar.h
【发布时间】:2010-10-28 02:30:08
【问题描述】:

我正在尝试编写跨平台 i18n C++ 代码。由于大多数 linux 系统更喜欢使用 UTF-8 作为字符编码,我认为我应该在 linux 上使用 string,在 Windows 上使用 wstring。 tchar.h 在 Linux 上可用吗? Linux 上 tchar.h 的等效替代品是什么?

【问题讨论】:

    标签: c++ linux internationalization tchar


    【解决方案1】:

    您可能会发现this 文章很有用。特别是,在接近尾声时,他们讨论了一些关于使用 TCHAR 和处理 Windows 代码的问题。

    文章总结为:

    使用 GNU C 编译器编译此代码时,TCHAR 将被转换为宽字符数据类型(大多数可移植库在其头文件中定义 TCHAR 并参考 wchar_t)。事实上,这就是我如何将 C++ 程序变成一个字谜生成器的方法:我使用标准 C++ 字符串填充 UTF-8,并使用转换为 wchar_t 的指针将数据提供给库函数。解释为 UTF-32 的 UTF-8 数据等于垃圾(但它对于混淆数据和错误非常有用)。

    【讨论】:

    • 明确地说,tchar.h 仅适用于 Windows。但是滚动自己的 tchar.h 相当简单。
    【解决方案2】:

    为了构建以 Windows 为中心的源代码,我可以使用 Cygwin 的 tchar.h 文件,该文件位于 cygwin\usr\include\w32api 文件夹中。

    我实际上是使用 Android NDK 构建的。 出于我的目的,我制作了 tchar.h 的副本并对其进行了修补。

    //#include <crtdefs.h>
    
    #define _CRTIMP
    
    //#define _strninc(_pc,_sz) (((_pc)+(_sz)))
    //  _CRTIMP size_t __cdecl __strncnt(const char *_Str,size_t _Cnt);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-14
      • 2013-05-27
      • 2012-05-02
      • 1970-01-01
      • 2019-06-18
      • 2016-09-29
      • 2013-03-17
      • 2014-07-25
      相关资源
      最近更新 更多