Дмитрий ⬡
Anonymous
Точняк? В прошлый раз у меня не сработало.
Ну, ща проверю для тебя. У меня работало.
Дмитрий ⬡
Свежая мысль: а ещё можно исправить ворнинг.
Автор той либы сидит на C89 потому что старый вижак ему удобнее!
Vsevolod
лучше выкинуть -Werror - 'nj pkj
Vsevolod
это зло
Anonymous
Закопайся в @supapro и не вылезай, пока не изменишь мнение.
Vsevolod
мое мнение обусловлено многолетней практикой
Max
Автор той либы сидит на C89 потому что старый вижак ему удобнее!
Печально) Кажется, есть что-то вроде #pragma GCC system_header
Anonymous
мое мнение обусловлено многолетней практикой
Хорошо, если есть опыт, значит и сможешь аргументы привести.
Vsevolod
аргументы тут и без меня приводят выше
Max
правда, придётся в отдельный хэдер запихнуть проблемный include
Vsevolod
вначале создать себе проблемы, а потом героически их превозмогать через прагму
Vsevolod
которая СПРЯЧЕТ все ворнинги
Vsevolod
отличное решение
Дмитрий ⬡
Ну, ща проверю для тебя. У меня работало.
А, я нашёл. Работает, у меня просто в прошлый раз была проблема в том, что в инклюд файлах были фичи, которые из стандарта собираются выкинуть, вот и ругалось. Просто так -isystem затащил.
Max
которая СПРЯЧЕТ все ворнинги
Только те файлы, которые пометишь.
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
и с -Werror жить невозможно в таких условиях
а как еще с варнингами бороться? они же накапливаются, в итоге у тебя 100500 варнингов в логе компиляции.
Alexey
+1 варнинг просто не заметишь.
Vsevolod
у меня нет 100500 варнингов - все просто
Vsevolod
у меня их вообще нет
Vsevolod
а вот в gcc 4.2 - есть
Anonymous
а вот в gcc 4.2 - есть
А выключить -Werror для конкретного компилятора? (не должно быть сложно, строчки 3, если используешь CMake)
Vsevolod
-Werror хорошо для дев сборок, но в этом случае этого даже недостаточно
Alexey
у меня их вообще нет
а ты единственный разработчик в проекте?
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, есть и новее?
Timur
А вот сюда кто-нибудь завтра идет? http://cpp-russia.ru/?p=1463
вот это поворот! А как это прошло непроанонсированным? @sermp ?
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"
Igor
нет, в то, зачем нужен -Werror, кроме как для dev сборок
из недавнего - ловить логи в которых %d больше чем печатаемых чиселок и narrowing меток времени из uint64 до int или вопрос "зачем -Werror когда можно -Werror=конкретный-варн"?
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