解决此编译错误:C ++ [-Werror = c ++-compat]中的标识符“ and”是特殊的运算符名称吗?

时间:2019-04-09 09:39:54

标签: c++ c gcc cmake

我在我的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)

我该如何解决?

2 个答案:

答案 0 :(得分:3)

除了当前的编译标志之外,不要使用-Werror或使用-Wno-error=c++-compat

通常,无条件-Werrora bad idea。最好有选择地向错误提示警告,例如-Werror=return-type。否则,您的项目必定无法使用其他编译器甚至是当前编译器的较新版本进行编译。

答案 1 :(得分:2)

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

使用前者可以解决 you 的问题。这样做可能会解决每个人 ...

的问题