Дмитрий ⬡
Dmitrii
Vsevolod
лучше выкинуть -Werror - 'nj pkj
Vsevolod
это зло
Anonymous
Anonymous
Закопайся в @supapro и не вылезай, пока не изменишь мнение.
Vsevolod
мое мнение обусловлено многолетней практикой
Max
Vsevolod
аргументы тут и без меня приводят выше
Max
правда, придётся в отдельный хэдер запихнуть проблемный include
Vsevolod
вначале создать себе проблемы, а потом героически их превозмогать через прагму
Vsevolod
которая СПРЯЧЕТ все ворнинги
Vsevolod
отличное решение
Дмитрий ⬡
Ну, ща проверю для тебя. У меня работало.
А, я нашёл. Работает, у меня просто в прошлый раз была проблема в том, что в инклюд файлах были фичи, которые из стандарта собираются выкинуть, вот и ругалось. Просто так -isystem затащил.
Anonymous
Отказываться от лишнего "контроля качества" из-за одного хедера.
Anonymous
Тоже отличное решение, имхо.
Anonymous
Ну, сочтёмся на том, что это проекто-специфично, если не используются либы с легаси/говнокодом — тогда -Werror лишним не будет, в тяжких случаях прийдётся отказаться.
Anonymous
Только те файлы, которые пометишь.
#pragma GCC warnings push
#pragma GCC warnings ignore "-Wshitcode"
...
#pragma GCC warnings pop
Что-то вроде того для более точного контроля.
Anonymous
Не помню точный синтаксис.
Alexey
А вот сюда кто-нибудь завтра идет? http://cpp-russia.ru/?p=1463
Vsevolod
какой контроль качества от -Werror?
Vsevolod
особенно если собираешь парком компиляторов
Vsevolod
начиная от gcc 4.2 под openbsd
Сережа
да и типы только мешают программисту
Vsevolod
вот когда соберете свой прекрасный проект в таких условиях с -Werror, тогда и будете меня учить
Anonymous
какой контроль качества от -Werror?
Ну, скажем релизы собирать с -Werror, разработчики иногда имеют склонность начинать игноировать варнинги, которые не исправляются длительное время.
Vsevolod
я собирал, да
Anonymous
А они могут привести к багам.
Vsevolod
я собираю дев сборки с clang плагином
Vsevolod
который в том числе падает на варнингах
Vsevolod
а release сборки я собираю системным компилятором
Vsevolod
для 9 систем
Vsevolod
и с -Werror жить невозможно в таких условиях
Alexey
+1 варнинг просто не заметишь.
Vsevolod
у меня нет 100500 варнингов - все просто
Vsevolod
у меня их вообще нет
Vsevolod
а вот в gcc 4.2 - есть
Anonymous
Anonymous
а вот в gcc 4.2 - есть
А выключить -Werror для конкретного компилятора? (не должно быть сложно, строчки 3, если используешь CMake)
Vsevolod
-Werror хорошо для дев сборок, но в этом случае этого даже недостаточно
Igor
а вот в gcc 4.2 - есть
а можно пару примеров хоть, навскидку, чтобы понимать про какого рода проблемы ты говоришь?
Vsevolod
если бы коверити не сыпал бы так мощно false positive, то круто было бы и его к каждой сборке подключать
Vsevolod
gcc 4.2 довольно сильно тупит в случае:
int var;
if (cond) { var = 1; } else { var = 2; } printf("%d\n", var);
Vsevolod
говорит, что var используется без инициализации
Igor
миленько так
отключать подобные false positive для таких суперстаров не пробовали? насколько я понимаю, 4.2 не единственный gcc, есть и новее?
Sergey
зал небольшой совсем
Sergey
анонс на сайте был
Sergey
сразу налетело
Igor
хитрецы...)
Sergey
будет видео
Sergey
если есть прямо желание придти, но можно мне написать сейчас
Sergey
и завтра постоять :)
Sergey
Там по идее проход по спискам будет :(
Sergey
Б — безопасность
Anonymous
Anonymous
Собсно упирается в то, что зачем нужны вообще варнинги.
Vsevolod
нет, в то, зачем нужен -Werror, кроме как для dev сборок
Vsevolod
-isystem - это потенциально более опасное решение. pragma warnings push/pop лучше, но непортабельно (и опять же foreign compiler наверняка от этого -Werror сломается)
Vsevolod
был подобный опыт с sun pro на солярке
Anonymous
Тяжкая у тебя матрица сборки, не раскроешь секрет, что разрабатываешь?
Alexander "SonnySlave"
Andrei
Есть объявление члена-функции в классе, у которой в параметрах есть другой класс.
Этот класс объявлен в другом namespace.
Можно ли как-то задекларировать класс, чтобы не тянуть .h?
а то пишет "declaration does not declare anything"
Сережа
передается он в параметрах по указателю?
Сережа
если нет то нельзя, тебе в месте определения функции нужно знать размер объекта класса, который ты в функцию передаешь
Alexander
С -Werror можно жить. Например что-то не считая варнингом ( -Wno-missing-field-initializers )
Vsevolod
еще раз
Vsevolod
так ты отключаешь полезные варнинги, не получая вообще никакого профита взамен
Vsevolod
а без -Werror и без этих хаков ты просто делаешь так, чтобы варнингов не было
Vsevolod
и все
Vsevolod
самодисциплина, все дела
Vsevolod
ну или четко понимаешь, что вот этот вот варнинг можно считать false positive
Alexander
Ну да, у меня даже целый .h вырос в проекте . Называется compile_resolve.h