我的问题与此类似: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
答案 0 :(得分:0)
Visual Studio 2015中添加了对char16_t
和char32_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声明并重命名与这些名称冲突的任何其他标识符。