c - 标识符wchar_t未定义

标签 c compiler-errors wchar-t

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

identifier wchar_t is undefined error

我了解这些固有类型的定义来自编译器,但我正在获取其他类型的定义,但不确定为什么为什么要特别为wchar_t分解?
我怀疑,因为我正在使用 Visual Studio 2017-Clang与Microsoft CodeGen(v141_clang_c2)作为工具集,我怀疑这可能与打开正确的标记一样简单。

enter image description here

最佳答案

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

#undef _WCHAR_T_DEFINED
#include<stddef.h>

但是,我不确定这是否是最佳选择。

因此,此更改是在了解@keith告诉我的之后,需要为C添加wchat_t。进一步进行研究以了解编译器级别的行为和可用的标志。
要知道为什么我添加了宏的undef,请阅读以下链接,
  • https://docs.microsoft.com/en-us/cpp/build/reference/zc-wchar-t-wchar-t-is-native-type?view=vs-2019
  • https://github.com/microsoft/clang-1/blob/master/test/Driver/cl-zc.cpp

  • 简而言之,
    // 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
    

    关于c - 标识符wchar_t未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59079700/

    相关文章:

    c++ - 为什么 `std::basic_ifstream<char16_t>` 在 C++11 中不起作用?

    c++ - 如何从 wchar_t* 转换为 wstring?

    c - 异常行为 : typedef and object of same name

    c - 从 eclipse autotools 插件执行 automake

    c - C 如何处理补码架构中的数字 0?

    c++ - 调试霍纳规则程序

    c# - Visual Studio 2012 运行 Windows Phone 问题

    java - 将几行代码写入一行是否有益(就内存和空间复杂性而言)。这值得么?

    compiler-errors - 在NME中定位-演示项目无法转换为例如JavaScript-目标错误

    c++ - 是否可以在 Visual Studio 2008 中默认使用 UTF-8 编码?