exponenta event banner

Правило AUTOSAR C++ 14 M3-1-2

Функции не должны объявляться в объеме блока

Описание

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

Функции не должны быть объявлены в объеме блока.

Объяснение

Рекомендуется размещать все объявления на уровне пространства имен.

Кроме того, при объявлении функции в области действия блока часто не ясно, является ли оператор объявлением функции или объявлением объекта с вызовом конструктора.

Поиск неисправностей

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

Примеры

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

class A {
};

void b1() {
    void func(); //Noncompliant
    A a();   //Noncompliant
}

В этом примере объявления func и a находятся в объеме блока b1.

Объявление второй функции может вызвать путаницу, поскольку не ясно, a - функция, возвращающая объект типа A или a сам является объектом типа A.

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

Группа: Основные понятия
Категория: Обязательно, Автоматизировано
Представлен в R2019a