Я получаю много этих предупреждений из стороннего кода, который не могу изменить. Есть ли способ отключить это предупреждение или хотя бы отключить его для определенных областей (например, #pragma push / pop в VC ++)?
Пример:
list.h:1122: warning: `list<LogOutput*, allocator<LogOutput*> >::node_alloc_' will be initialized after
list.h:1117: warning: `allocator<LogOutput*> list<LogOutput*, allocator<LogOutput*> >::alloc_'
g++
suppress-warnings
LK__
источник
источник
Ответы:
Убедитесь, что члены отображаются в списке инициализатора в том же порядке, что и в классе
или вы можете включить
-Wno-reorder
источник
b
иa
инициализация может зависеть друг от друга. Наивный пользователь может попытаться изменить порядок инициализации, чтобы получить какой-то эффект, и Предупреждение даст понять, что оно не работает.-Wno-reorder
без упоминания, к каким проблемам это может привести. Я знаю, что ОП не спрашивал никаких других подробностей, но такой высоко оцененный ответ, я бы ожидал хотя бы упомянуть контекст и предостережения вокруг этого. Разве мы не должны отвечать на вопрос, который должен был написать ОП ?Вы можете отключить его с помощью
-Wno-reorder
.источник
Для тех, кто использует QT с этой ошибкой, добавьте это в .pro файл
источник
использовать
-Wno-reorder
(man gcc твой друг :))источник
Если вы видите ошибки из библиотечных заголовков и используете GCC, вы можете отключить предупреждения, включив
-isystem
вместо них заголовки-I
.Подобные функции существуют в Clang .
Если вы используете CMake, вы можете указать
SYSTEM
дляinclude_directories
.источник
SYSTEM
"?include_directories
строки.Порядок инициализации не имеет значения. Все поля инициализируются в порядке их определения в своем классе / структуре. Но если порядок в списке инициализации другой, gcc / g ++ генерирует это предупреждение. Измените только порядок инициализации, чтобы избежать этого предупреждения. Но вы не можете определить поле с помощью инициализации до его создания. Это будет ошибка во время выполнения. Таким образом, вы меняете порядок определения. Будьте осторожны и сохраняйте внимание!
источник
порядок важен, потому что если a инициализируется до b, а a зависит от b. Появится неопределенное поведение.
источник