Исправьте эту ошибку компиляции: идентификатор «и» является специальным именем оператора в C [-Werror = c -compat]?

#c #c #gcc #cmake

#c #c #gcc #cmake

Вопрос:

Я добавил библиотеку GTK в свой проект C , и появляется эта ошибка. Как мне решить это?

Ошибка возникает в этой строке:

line 84: GLIB_DEPRECATED_IN_2_54_FOR(g_object_new_with_properties and g_initable_init)

of /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)
  

Как мне это исправить?

Комментарии:

1. Не использовать -Werror ?

Ответ №1:

Либо не используйте -Werror , либо используйте -Wno-error=c -compat в дополнение к вашим текущим флагам компиляции.

В общем, безусловное -Werror плохая идея. Лучше выборочно добавлять предупреждения к ошибкам, например, -Werror=return-type . В противном случае ваш проект не сможет скомпилироваться с другим компилятором или даже с более новой версией текущего компилятора.

Ответ №2:

В дополнение к добавлению флага, предложенного @Ruslan, рассмотрите возможность отправки отчета об ошибке в GTK. Хотя верно, что использование and в качестве идентификатора допустимо C, это довольно плохая идея, которой можно легко избежать, изменив имя на and_ или на conjunction или что-то еще.

Выполнение первого решит проблему для вас. Выполнение последнего может решить проблему для всех