错误:xkeycheck.h(179):警告C4005:'char16_t':宏重定义“|致命错误C1189

时间:2018-06-04 12:29:10

标签: visual-studio visual-studio-2015

我的问题与此类似:Error: "warning C4005: 'SWIGTEMPLATEDISAMBIGUATOR': macro redefinition"

我有一个类似的警告代码(更改'char16_t'):

  

xkeycheck.h(179):警告C4005:'char16_t':宏重新定义

然后:

  

xkeycheck.h(179):注意:argomenti della riga di comando:vedere la precedente definizione   di'char16_t'

(翻译:“注意:命令行的句子:看看'char16_t'的先前定义)

但它继续给予这个:

  

xkeycheck.h(250):致命错误C1189:#error:C ++标准库禁止宏大化   关键字。启用警告C4005以查找禁用的宏。

编译器:Visual Studio 2015

1 个答案:

答案 0 :(得分:0)

Visual Studio 2015中添加了对char16_tchar32_t的支持。这意味着您无法再使用这些名称创建符号,但是您再也不需要它们,因为它们已经存在。

解决方案是删除typedef或宏的创建,或至少在defined(MSC_VER) && _MSC_VER < 1900时保护它。

请参阅MSDN

  

char_16_t和char32_t 您不能再将char16_t或char32_t用作typedef中的别名,因为这些类型现在被视为内置类型。用户和库作者通常将char16_t和char32_t分别定义为uint16_t和uint32_t的别名。

     

要更新代码,请删除typedef声明并重命名与这些名称冲突的任何其他标识符。