【问题标题】:Identifier wchar_t is undefined标识符 wchar_t 未定义
【发布时间】:2020-03-23 13:41:18
【问题描述】:

我正在尝试构建一个开源项目,我发现多个

identifier wchar_t is undefined error

我了解这些内在类型的定义来自编译器,并且我正在获取其他类型,但不确定为什么它专门针对 wchar_t 分崩离析? 我怀疑,因为我使用 Visual Studio 2017 - Clang with Microsoft CodeGen (v141_clang_c2) 作为工具集,我怀疑这可能就像打开正确的标志一样简单。

【问题讨论】:

  • 你试过#include <wchar.h>
  • wchar_t 是 C++ 中的关键字和内置类型,但在 C 中,它是在 <stddef.h><wchar.h> 中定义的 typedef。您正在构建哪个开源项目?
  • 感谢您的回复。我正在尝试构建:tpm2-tss
  • 需要明确的是,我在 UCRT 文件中遇到了所有这些错误,例如 stdlib.h、vcruntime_string.h、corecrt.h 等
  • 点击“字符集”并选择“Unicode”

标签: c compiler-errors wchar-t


【解决方案1】:

我添加了这两行并解决了问题,

#undef _WCHAR_T_DEFINED
#include<stddef.h>

但我不确定这是否是最佳更改。

因此,此更改是在了解@keith 告诉我需要为 C 添加 wchat_t 之后进行的。进一步调查以了解编译器级别的行为和可用的标志。 要知道我为什么添加宏的undef,请阅读以下链接,

总之,

// RUN: %clang_cl /c -### /Zc:wchar_t -- %s 2>&1 | FileCheck -check-prefix=WCHAR_T-ON %s
// WCHAR_T-ON-NOT: argument unused during compilation
// RUN: %clang_cl /c -### /Zc:wchar_t- -- %s 2>&1 | FileCheck -check-prefix=WCHAR_T-OFF %s
// WCHAR_T-OFF: argument unused during compilation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多