Данное диагностическое правило основано на руководстве AUTOSAR (AUTomotive Open System ARchitecture) по разработке программного обеспечения.
Приведения между указателями на объект и целочисленными типами могут послужить причиной неопределенного, неуточненного или зависимого от реализации поведения. В связи с этим, рекомендуется не использовать подобные приведения.
Пример нарушения 1:
struct S { int16_t i; int16_t j; } *ps = ....; int i64 = reinterpret_cast<int>(ps);
Пример нарушения 2:
void foo(int i) {} void wrong_param_type() { char *pc = ....; foo((int) pc); }
Пример нарушения 3:
int wrong_return_type() { double *pd = ....; return (int) pd; }
Данная диагностика классифицируется как:
|