gnu gcc Как подавить предупреждение: typedef был проигнорирован в этом объявлении [включено по умолчанию] - PullRequest
2 голосов
/ 06 марта 2012

Я использую GNU gcc 4.6.2 на Fedora 16. Я пишу приложение с использованием стороннего API, после компиляции я получил много предупреждений.

warning: ‘typedef’ was ignored in this declaration [enabled by default]

Просто интересно, как я могу это подавить?Я компилирую свою программу с флагом -Wall.

В этом документе http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html, упоминается что-то вроде -Wunused-local-typedefs .

Я пытался -Wno-unused-local-typedefs , но не работает.

Спасибо.

Ответы [ 6 ]

8 голосов
/ 03 августа 2013

-Wno-unused-local-typedefs работает в gcc 4.8 для меня.

7 голосов
/ 02 мая 2014

gcc позволяет вам указать, что определенные пути включения библиотек должны обрабатываться как системные библиотеки с переключателем -isystem, который обеспечивает специальную обработку этих заголовков в отношении флагов, которые вы используете в остальной части кода.,Так, например, если у вас есть неиспользованные локальные typedefs от использования определенных библиотек Boost в test.cpp (я недавно столкнулся с этим, включая библиотеку Boost signals2)

g++ -o test{,.cpp} -Wall -Wextra -Werror -I /usr/local/boost-1.55.0/include -L /usr/local/boost-1.55.0/lib

, и вышеописанное не создает чисто, попробуйтеследующее

g++ -o test{,.cpp} -Wall -Wextra -Werror -isystem /usr/local/boost-1.55.0/include -L /usr/local/boost-1.55.0/lib

, которое будет (при условии, что предупреждения, поступающие из библиотек Boost, которые вы включаете в test.cpp, являются вашей единственной проблемой, конечно).

6 голосов
/ 06 марта 2012

Согласно исходному коду gcc (gcc / cp / decl.c: 4108):

warning (0, "%<typedef%> was ignored in this declaration"); 

В gcc 4.6.2 нет флага командной строки (то есть 0) для подавления этого предупреждения.

1 голос
/ 27 декабря 2016

Поскольку -Wunused-local-typedef является частью -Wall, убедитесь, что у вас нет -Wall после -Wno-unused-local-typedef. Если вы это сделаете, -Wall просто снова включит опцию.

0 голосов
/ 02 января 2019

Это предупреждение GCC означает, что ваш typedef может быть дублирован, и вы должны вместо этого удалить ключевое слово typedef. Например:

typedef enum class Something {
  THING1,
  THING2,
} Something;

Этот код выше является дубликатом типа, потому что класс enum уже определен как тип. Поэтому вы должны удалить ключевое слово typedef, а также Something в конце!

0 голосов
/ 04 октября 2016

В c ++ 17 вы должны использовать Maybe_unused, см.

http://en.cppreference.com/w/cpp/language/attributes

http://www.open -std.org / ОТК1 / SC22 / wg21 / документы / документы / 2016 / p0212r0.pdf

(извините, я не смог опубликовать пример, так как он считается ошибочным с отступом от stackoverflow)

...