AUTOSAR C++14 Rule A7-1-8

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

Описание

Управляйте определением

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

Объяснение

Не введите спецификаторы, включайте:

  • typedef.

  • friend.

  • constexpr.

  • register.

  • static.

  • extern.

  • thread-local.

  • mutable.

  • inline.

  • virtual.

  • explicit.

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

Реализация Polyspace

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

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

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

Примеры

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

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

#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 register long long l1 = 0; // Compliant
	register  long long static constexpr l3 = 0; //Noncompliant
};
main(){
	//...
}

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

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

Группа: объявление

Введенный в R2020a