klocwork CWARN.SIGNEDBIT на неподписанном символе

я имею Код C ++ который содержит:

struct Struct
{
uint8_t varA : 1;
uint8_t varB : 1;
uint8_t varC : 1;
};

Когда я бегу Klocwork 10 на этом я получаю предупреждение:

CWARN.SIGNEDBIT (4:Review) Analyze
Bit field 'varA' has one bit and is signed

И то же самое для других переменных в этой структуре.
uint8_t — беззнаковый тип. Когда я пытаюсь использовать подписанный символ тогда я получаю ошибку, а не предупреждение, как здесь. С помощью без знака int решает проблему, но я хочу использовать голец вместо.

Мой вопрос здесь: почему появляется это предупреждение и как его решить?

1

Решение

KlocWork может ковыряться здесь.
Битовые поля должны быть целочисленного типа, а не символьного типа.

Попробуйте объявить битовые поля как unsigned int.

Компилятор должен упаковать биты в наименьший тип данных, который может содержать все биты.

Проверьте список языков ассемблера, чтобы увидеть тип данных, который использует компилятор.

0

Другие решения

Похоже, что это ошибка Klocwork 10, я добавлю это как исключение к результатам теста. Спасибо за ответ

0

Эта проблема (FP) была исправлена ​​в версии Klocwork 2017.1.
Обновите Klocwork с версии 10 до версии 12 для проверки.

0
По вопросам рекламы [email protected]