170 похожих чатов

Вопрос по стат. анализу. Есть switch по енуму. Если в

нём не сделать default-ветку, компилятор даёт ворнинг. Если сделать, ворнинг даёт анализатор (Svace), мол, все варианты енума проверены, ветка недостижимая.
Можно ли их помирить, не заглушив диагностику в анализаторе?

12 ответов

24 просмотра

Если в нём не сделать default-ветку, компилятор даёт ворнинг. можно пример на godbolt.org?

формально, прав компилятор. тип перечисления может иметь значение, для которого в нём нет названия, если оно в его диапазоне (с этими диапазонами небольшая каша, но это не суть) если вы хотите сказать "нет, мне пофиг, только эти значения, а иначе UB", можно добавить default: unreachable(), и посмотреть, как правильно в вашем случае реализовать unreachable (в C++23 будет std::unreachable, в GCC и clang есть __builtin_unreachable()) если вы хотите сделать так, но сохранить на будущее warning о свиче, в котором рассмотрены не все случаи, можно вынести свич в функцию (лямбду), заменить break на return, пихнуть unreachable() в конец функции и использовать -Wswitch

Я согласна с компилятором, но надо как-то сесть на два стула ((

так я далее написал как на них сесть

Ivan Sokolov
так я далее написал как на них сесть

не все могут себе позволить C++23

Ivan Sokolov
формально, прав компилятор. тип перечисления может...

>> с этими диапазонами небольшая каша Да нет там каши, диапазон от нуля до следующего круглого бинарного числа. Если есть отрицательные — то же самое с нижней границей диапазона

Ivan Sokolov
так я далее написал как на них сесть

На default: unreachable(); анализатор ровно так же будет ругаться, не?

Юльвёнок Чувствительная
На default: unreachable(); анализатор ровно так же...

значит выход один: дорабатывать анализатор. если он ваш или хотя бы опенсорсный

Ofee Oficsu
>> с этими диапазонами небольшая каша Да нет там ...

у в общем-то да, но при этом диапазон может не совпадать с диапазоном никакого целочисленного типа, например быть [0, 32). это может вызвать взрыв мозга у человека, который не знаком с этими правилами :)

Похожие вопросы

Обсуждают сегодня

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Мужики. привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных элементов...
Kraszx
2
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Всем привет! Кто пользуется DevExpress, подскажите пожалуйста, реализован ли в TcxGrid в новых версиях поиск по датам как в Экселе (ну т.е. не просто список чекбоксов со значе...
A Z
4
Карта сайта