MISRA C:2012 Rule 12.3

Оператор запятыми не должен использоваться

Описание

Определение правила

Оператор запятыми не должен использоваться.

Объяснение

Оператор запятыми может нанести ущерб читаемости. Часто можно записать один и тот же код в другую форму.

Поиск и устранение проблем

Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».

Примеры

расширить все

typedef signed int abc, xyz, jkl;
static void func1 ( abc, xyz, jkl );       /* Compliant - case 1 */
int foo(void)
{
    volatile int rd = 1;                   /* Compliant - case 2*/
    int var=0, foo=0, k=0, n=2, p, t[10];  /* Compliant - case 3*/
    int abc = 0, xyz = abc + 1;            /* Compliant - case 4*/
    int jkl = ( abc + xyz, abc + xyz );    /* Noncompliant - case 1*/
    var = 1, foo += var, n = 3;          /* Noncompliant - case 2*/ 
    var = (n = 1, foo = 2);              /* Noncompliant - case 3*/
    for ( int *ptr = &t[ 0 ],var = 0 ;
          var < n; ++var, ++ptr){}    /* Noncompliant - case 4*/
    if ((abc,xyz)<0) { return 1; }         /* Noncompliant - case 5*/
}

В этом примере код показывает различные использования запятых в коде С

Несоответствующие случаи
СлучайПричина несоблюдения
1При чтении кода не сразу очевидно, что jkl инициализируется в. Например, вы можете сделать вывод, что jkl имеет значение abc+xyz, (abc+xyz)*(abc+xyz), f((abc+xyz),(abc+xyz))и так далее.
2При чтении кода не сразу очевидно, foo ли имеет значение 0 или 1 после оператора.
3При чтении кода не сразу очевидно, какое значение присвоено var.
4При чтении кода не сразу очевидно, какие значения управляют for цикл.
5 При чтении кода не сразу очевидно, if ли оператор зависит от abc, xyz, или и то, и другое.
Совместимые случаи
СлучайПричина податливости
1Использование запятых для вызова функций с переменными разрешено.
2Оператор запятыми не используется.
3 & 4При использовании запятой для инициализации переменные и их значения сразу же очевидны.

Проверяйте информацию

Группа: Выражения
Категория: Консультационные
Категория СМЖЛ: Консультационная