修复此编译错误:标识符“和”是C ++中的特殊操作符名称[-Werror = c ++ - compat]?

问题描述 投票:2回答:2

我在我的C ++项目中添加了GTK库,出现了这个错误。我该如何解决这个问题?

此行发生错误:

line 84: GLIB_DEPRECATED_IN_2_54_FOR(g_object_new_with_properties and g_initable_init)

/usr/include/glib-2.0/gio/ginitable.h

从形式上看,

/usr/include/glib-2.0/gio/ginitable.h:84:58: error: identifier "and" is a special operator name in C++ [-Werror=c++-compat]
 GLIB_DEPRECATED_IN_2_54_FOR(g_object_new_with_properties and g_initable_init)

我该如何解决?

c++ c gcc cmake
2个回答
3
投票

要么不使用-Werror,要么使用-Wno-error=c++-compat以及当前的编译标志。

一般来说,无条件的-Werrora bad idea。最好选择性地向错误发出警告,例如: -Werror=return-type。否则,您的项目将无法使用不同的编译器甚至更新版本的当前编译器进行编译。


2
投票

除了添加@Ruslan建议的标志,考虑filing a bug report against GTK。虽然使用and作为标识符确实是有效的C,但通过将名称更改为and_conjunction或其他内容可以轻松避免这一点。

做前者会为你解决问题。做后者可能会解决每个人的问题......

© www.soinside.com 2019 - 2024. All rights reserved.