V3546. AUTOSAR. Conversions between pointers to objects and integer types should not be performed.
Данное диагностическое правило основано на руководстве 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;
}
Данная диагностика классифицируется как:
|