>
>
>
V2533. MISRA. C-style and functional no…


V2533. MISRA. C-style and functional notation casts should not be performed.

Данное диагностическое правило основано на руководстве MISRA (Motor Industry Software Reliability Association) по разработке программного обеспечения.

Это правило справедливо только для C++.

C-подобное (C-style cast) и приведение типов в функциональном стиле (functional cast) способны осуществлять преобразования между несвязанными типами, что может привести к ошибке.

Следует явно приводить типы с использованием операторов 'static_cast', 'const_cast' и 'reinterpret_cast'.

Примеры, на которые анализатор выдаст срабатывание:

int i;
double d;
size_t s;
void *p;
....
i = int(p);      //V2533
d = (double)s;   //V2533
s = (size_t)(i); //V2533 
p = (void *)(d); //V2533

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

(void)fclose(f);

Данная диагностика классифицируется как:

  • MISRA-CPP-5.2.4