如何将使用tchar.h处理unicode的Windows C ++移植到iOS应用程序

时间:2017-08-09 17:02:48

标签: c++ ios winapi unicode tchar

我有一些c ++代码需要集成到iOS应用程序中。 windows c ++代码使用tchar.h处理unicode。我为iOS做了以下定义:

#include <wchar.h>
#define _T(x)     x
#define TCHAR       char
#define _tremove    unlink
#define _stprintf   sprintf
#define _sntprintf vsnprintf
#define _tcsncpy wcsncpy
#define _tcscpy wcscpy
#define _tcscmp wcscmp
#define _tcsrchr wcsrchr
#define _tfopen fopen

当尝试构建应用程序时,其中许多要么丢失(例如wcscpy),要么有错误的参数。负责c ++代码的编码器说我应该使用char而不是wchar,所以我将TCHAR定义为char。有没有人知道如何做到这一点?

1 个答案:

答案 0 :(得分:2)

TCHAR(和FYI,在C运行时为_TCHARTCHAR用于Win32 API)的目的是允许代码在{{1}之间切换在编译时,或char API,但您的定义是将它们混合在一起。 wchar_t函数适用于wcs,因此您需要将这些定义更改为wchar_t对应项,以匹配您的其他基于char的定义:

char

此外,您正在将#define _tcsncpy strncpy #define _tcscpy strcpy #define _tcscmp strcmp #define _tcsrchr strrchr 映射到错误的C函数。它需要映射到_sntprintf而不是snprintf()

vsnprintf()

#define _sntprintf snprintf snprintf()的宣告方式截然不同:

vsnprintf()

这可能是你为什么会得到错误的论据&#34;错误。