exponenta event banner

Правило AUTOSAR C++ 14 A7-1-8

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

Описание

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

Спецификатор, не являющийся спецификатором типа, должен быть помещен перед спецификатором типа в объявлении.

Объяснение

Нетипные спецификаторы включают в себя:

  • typedef.

  • friend.

  • constexpr.

  • register.

  • static.

  • extern.

  • thread-local.

  • mutable.

  • inline.

  • virtual.

  • explicit.

Чтобы сделать код более читаемым, поместите спецификаторы, не относящиеся к типу, перед спецификаторами типа в объявлении.

Внедрение Polyspace

Объявления флагов Polyspace ®, размещающие спецификаторы, не относящиеся к типу, после спецификатора типа. Если за спецификатором типа следуют более одного спецификатора типа, Polyspace помечает крайний правый спецификатор типа.

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

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

Примеры

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

В следующем примере показана реализация правила A7-1-8 AUTOSAR в Polyspace.

#include <cstdint>

typedef std::int32_t int1;  // Compliant
std::int32_t typedef int2;  // Noncompliant

class to_be_friend
{
    explicit to_be_friend(int); // Compliant
    static void* foo(void);     // Compliant
    void static* bar(void);     // Noncompliant
    virtual inline void i1(void) {}; // Compliant
    inline void virtual i2(void) {}; // Noncompliant
    constexpr static long long l1 = 0; // Compliant
    long long constexpr static l3 = 0; //Noncompliant
};
main()
{
    //...
}

Объявления флагов Polyspace, в которых спецификаторы, не относящиеся к типу, помещаются после спецификаторов типа. Объявление статического объекта l3 помечен, так как спецификаторы, не относящиеся к типу static и constexpr размещаются после спецификатора типа long long. Нарушение выделено на крайнем правом нетиповом спецификаторе, который static.

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

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