我需要编译一个C++(98.我不能迁移到11)代码到一个mex文件。Xcode 5.1 C++ 98 char16_t
不幸的是,在升级到Xcode 5.1之后(它也更新为Clang 3.4版本),我无法编译代码。
这是和在这里相同的问题:MEX compile error: unknown type name 'char16_t' 不幸的是,接受的答案是编译与我不能做的c + + 11支持。
在锵的源代码阅读,我发现这几行:
// In C11 these are environment macros. In C++11 they are only defined
// as part of <cuchar>. To prevent breakage when mixing C and C++
// code, define these macros unconditionally. We can define them
// unconditionally, as Clang always uses UTF-16 and UTF-32 for 16-bit
// and 32-bit character literals.
Builder.defineMacro("__STDC_UTF_16__", "1");
Builder.defineMacro("__STDC_UTF_32__", "1");
现在..我不知道为什么,如果他们定义宏,他们没有定义的类型char16_t。 而且还......我不能包括(找不到文件)或者cuchar
(C++ 11)或uchar.h
(C11)
如何解决这个问题的一些想法?
编辑:我想了解这是否是一个叮当(我必须表示它)的错误。 根据C++ 11标准(http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2018.html),应在头文件cuchar
中定义marco __STDC_UTF_16__
。但是我找不到那个文件。因此,我期望这个宏是未定义的。我认为MEX包含文件依赖于这个事实。
你可以看看我的编辑? – Francesco
btw:我解决了在编译时定义'char16_t'(因为matlab查找该变量) – Francesco
我不知道它是否是一个错误,但有一点可以肯定的是'char16_t'是一个C++ 11功能,而不是可以使用较早的C++标准。所以我认为宏只是依赖于C++ 98中的编译器实现。 – kyamagu