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

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

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

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 ]

3 голосов
/ 09 апреля 2019

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

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

2 голосов
/ 09 апреля 2019

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...