使用用于 C++ 代码的标头编译 C 代码时未知类型名称 char16_t
Posted
技术标签:
【中文标题】使用用于 C++ 代码的标头编译 C 代码时未知类型名称 char16_t【英文标题】:Unknown Type name char16_t while compiling C code using a header that is used for C++ code 【发布时间】:2019-06-17 18:28:56 【问题描述】:这是我的头文件,
样本.h
#pragma
#ifndef BASETYPES
#define BASETYPES
typedef char16_t WCHAR
#endif
这是我的 C 代码,
样本.c
WCHAR *name;
int main()
上述头文件最初仅由 C++ 代码使用。现在我有一个 C 代码要编译,它使用相同的头文件。
当我使用 GCC 编译 C 代码时,出现以下错误,
"error G5688306C: unknown type name char16_t"
我读到了这个this,它看起来并不是一个真正的错误。
我面临的问题是否有任何解决方法或解决方法?请提出建议。
【问题讨论】:
如何编译代码? gcc -std=c++ sample.c 在使用char16_t
之前尝试#include <uchar.h>
。
是的。但在 C++ 中,它已经是预定义的内置类型。只有C,我必须包含头文件对吗?
@ShaikSyedAli 好吧,它需要至少使用-std=c++11
构建。
【参考方案1】:
char16_t
不是内置的 C 类型。它是由C++11 在uchar.h
标头中引入的。通过-std=c++11
启用通过 GCC 使用 C++11 功能。
如果不能使用 C++11,则必须使用其他类型。wchar_t
或 uint16_t
可能有用。
【讨论】:
以上是关于使用用于 C++ 代码的标头编译 C 代码时未知类型名称 char16_t的主要内容,如果未能解决你的问题,请参考以下文章
当我使用标头时,C++ 函数会引发错误,但如果我在源代码中定义它则不会?