MISRA C:2012 Dir 4.5

Идентификаторы в том же пространстве имен с перекрывающейся видимостью должны быть типографским способом однозначными

Описание

Направляющее определение

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

Объяснение

То, что “однозначный” означает, зависит от алфавита и языка, в котором написан исходный код. Когда вы используете идентификаторы, которые типографским способом близки, можно перепутать между ними.

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

  • Обмен строчной буквой с ее прописным эквивалентом.

  • Присутствие или отсутствие символа подчеркивания.

  • Обмен буквой O и цифра 0.

  • Обмен буквой I и цифра 1.

  • Обмен буквой I и буква l.

  • Обмен буквой S и цифра 5.

  • Обмен буквой Z и цифра 2.

  • Обмен буквой n и буква h.

  • Обмен буквой B и цифра 8.

  • Обмен буквами rn и буква m.

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

Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.

Примеры

развернуть все

void func(void) {
    int id1_numval;
    int id1_num_val;  /* Non-compliant */

    int id2_numval;
    int id2_numVal;   /* Non-compliant */

    int id3_lvalue;
    int id3_Ivalue;   /* Non-compliant */

    int id4_xyz;
    int id4_xy2;      /* Non-compliant */

    int id5_zerO;
    int id5_zer0;     /* Non-compliant */

    int id6_rn;
    int id6_m;        /* Non-compliant */
}

В этом примере нарушено правило, когда идентификаторы, которые могут быть перепутаны друг для друга, используются.

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

Группа: проект Кода
Категория: консультация
Категория AGC: удобочитаемость

Введенный в R2015b