【问题标题】:Unknown Type name char16_t while compiling C code using a header that is used for C++ code使用用于 C++ 代码的标头编译 C 代码时未知类型名称 char16_t
【发布时间】:2025-12-19 03:05:06
【问题描述】:

这是我的头文件,

样本.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 构建。

标签: c++ c gcc char16-t


【解决方案1】:

char16_t 不是内置的 C 类型。它是由C++11uchar.h 标头中引入的。通过-std=c++11 启用通过 GCC 使用 C++11 功能。

如果不能使用 C++11,则必须使用其他类型。
wchar_tuint16_t 可能有用。

【讨论】: