exponenta event banner

MISRA C:2012 Правило 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*/
}

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

Случаи несоответствия
СлучайПричина несоблюдения
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При использовании запятой для инициализации переменные и их значения сразу становятся очевидными.

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

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