Xcode 5.1 C++98 char16_t
Xcode 5.1 C++98 char16_t
我需要编译一个c++(98。我还不能将代码迁移到mex文件中。
不幸的是,升级到Xcode 5.1 (Clang也更新到3.4版本)后,我无法编译代码。
这是同样的问题在这里:MEX编译错误:未知类型名称'char16_t'不幸的是,公认的答案是使用c++11支持进行编译,但我做不到。
在Clang的源代码中,我发现了这些行:
// 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)
有什么办法解决这个问题吗?
编辑:我想知道这是否是Clang的一个bug(我必须发出信号)。根据c++ 11标准(http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2018.html), marco __STDC_UTF_16__
应该在头文件cuchar
中定义。但我找不到那份文件。因此,我认为宏是未定义的。我认为MEX包含文件依赖于这个事实。
只需在代码的某个地方定义char16_t
(可能是CHAR16_T
)作为宏。
#define char16_t uint16_t
或者,在编译时传递-DCHAR16_T=uint16_t
标志。
相关文章:
- C++98,但叮叮当当地说使用nullptr?
- C ++枚举范围无法使用-std=c ++ 98进行编译,但使用-std=c ++ 11可以
- 如何在Visual Studio 2019中启用C++98编译?
- 使用 C++98 标准填充二维静态向量
- 作为参数模板的模板类:MSVC 错误 - 错误 C2977:模板参数过多 (C++98)
- 我正在使用dev c ++,但收到错误(C++98'array'必须由构造函数初始化)
- C++98中的浮点比较
- 在 C++98/03 中以相反的顺序将 C 数组附加到向量,而无需 for 循环
- 如何在 c++98 中通过特定字段在 QList 中查找对象?
- 连接来自 C++98 接口的 Qt 插槽和信号,无需 Qt、STL 或 Boost
- C++ 98 阵列大小
- 如何强制Qt QMake项目使用C++98标准?
- 如何处理C++98中不同类型的多个参数?
- 指针符号在参数规范中表示什么,例如:(char16 *缓冲区,int32 大小)?C++
- 在 C++98 中,'dvd1' 必须由构造函数初始化,而不是由 '{...}' 初始化
- 优化 C++ 98 中载体的滤波
- 异构容器查找 C++98
- 容器初始化在 C++98 中
- 如何严格靶向CLION中的C 98
- 致命错误:unordered_map:没有这样的文件或目录(C++ 98,gcc 4.8.5,使用 CMAKE)