Coverity обнаруживает неопределенный идентификатор при попытке вычисления смещения члена в структуре.Ошибка сканирования покрытия RW.UNDEFINED_IDENTIFIER при использовании offsetof()
typedef struct A
{
uint8_t mem[10];
} A;
size_t offset = offsetof(A, mem); // This line raises the error.
Точное описание покрытия - «идентификатор mem undefined».
Я попытался заменить mem на mem [0], mem [], удалил typedef из struct A, но ничто, кажется, не решило его. Будет здорово, если у кого-то есть указатели на то, что может расстраивать покрытие.
[Update # 1]: Я использую Ubuntu 16.04 (ядро - 4.4.0-38-родовой), GCC/G ++ 5.4.0, 7.5.1 Coverity
[Update # 2 ]: автономный test.c с этой структурой и следующими параметрами командной строки держит Coverity счастливого:
cov-build --dir . cc -c test.c -o test -Werror -march=corei7 -g -fstrict-aliasing -fstack-protector -fstrict-overflow -Wall -Wextra -Wshadow -Wmissing-prototypes -Wstrict-prototypes -O3 -fomit-frame-pointer -fPIE.
Интересно, что когда я скомпилировать весь проект, это приводит к куче ошибок для одних и тех же линий: UNDEFINED_IDENTIFIER, ROUTINE_NOT_EMITTED, TYPE_IDENTIFIER_NOT_ALLOWED.
Не могли бы вы предоставить свою операционную систему, компилятор и версию? –
Я использую ubuntu 16.04 (ядро - 4.4.0-38-generic), gcc/g ++ 5.4.0, coverity 7.5.1 – 0sn1s