Данное диагностическое правило основано на руководстве 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);
Данная диагностика классифицируется как:
|