Как обработать ложное предупреждение «Условие всегда истинно», так как оно фактически контролируется макросом - PullRequest
1 голос
/ 28 июня 2019

Я использую CLion для написания программ на C ++.Один файл имеет

#ifdef USE_BAKER_READ_BARRIER
static constexpr bool kUseBakerReadBarrier = true;
#else
static constexpr bool kUseBakerReadBarrier = false;
#endif

, а другие файлы используют kUseBakerReadBarrier.

CLion всегда жалуется на использование kUseBakerReadBarrier, говоря, что условие всегда истинно.

enter image description here

По общему признанию, const истинно при текущей настройке.Но иногда я буду компилировать проект без опции компилятора -DUSE_BAKER_READ_BARRIER, а затем откроется ветвь kUseBakerReadBarrier == false.

Эти типы ложных предупреждений добавляют много желтых глазных болей в файл и усложняют мне задачуНайдите реальные предупреждения.

Как лучше всего обрабатывать эти «ложные всегда истинные» предупреждения?

Я не хочу подавлять все предупреждения «Упрощенные утверждения», как я хотел бы в IDEчтобы предупредить меня как

bool a=true;
if(a)
   ...

Я открыт, чтобы узнать поведение / решение в других IDE, предпочтительно Visual Studio.

1 Ответ

1 голос
/ 28 июня 2019

Не уверен, что это вообще выполнимо;анализ экспоненциально растущего объема условной компиляции C ++, которая уже сложна, потребует неоправданного количества времени программиста и процессора.

Вы можете отключить определенную строку с помощью #pragma.Инспекции CLion обычно даже предлагают сделать это за вас как один из вариантов исправления.

...