Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
>
>
>
V3519. AUTOSAR. The comma operator...
menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V3519. AUTOSAR. The comma operator should not be used.

03 Мар 2021

Данное диагностическое правило основано на руководстве AUTOSAR (AUTomotive Open System ARchitecture) по разработке программного обеспечения.

Не стоит использовать оператор 'запятая', так как он может привести к путанице при чтении кода.

Рассмотрим следующий пример:

int foo(int x, int y) { .... }
foo( ( 0, 3), 12 );

Код может ввести программиста в заблуждение, если ему до прочтения вызова функции неизвестна ее сигнатура. Может показаться, что в функцию передается три аргумента, однако это не так: оператор 'запятая' в выражении '(0, 3)' вычислит левый и правый аргументы, а затем возвращает результат второго. В итоге, вызов функции на самом деле принимает вид:

foo( 3, 12 );

Диагностика выдает предупреждение и для других случаев, таких как например этот:

int myMemCmp(const char *s1, const char *s2, size_t N)
{
  for (; N > 0; ++s1, ++s2, --N) { .... }
}

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

  • AUTOSAR-M5.18.1