exponenta event banner

AUTOSAR C++14 Rule A2-13-6

Универсальные имена персонажей должны использоваться только в символьных или строковых литералах

Описание

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

Универсальные имена персонажей должны использоваться только в символьных или строковых литералах.

Объяснение

Универсальные имена персонажей являются способом представлять unicode символы при помощи кодовых точек. Например, \U0000231A представляет unicode символ '⌚'. Когда вы используете универсальные имена персонажей, чтобы задать идентификатор, он затрудняет, чтобы считать исходный код. Используя универсальные имена персонажей, когда идентификатор сбивает с толку и неприятен. Избегайте использования универсальных имен персонажей вне символьного или строкового литерала.

Реализация Polyspace

Polyspace® отмечает использование универсальных имен персонажей вне символьного или строкового литерала.

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

Если вы ожидаете нарушение правила, но не видите его, относитесь, чтобы Диагностировать, Почему Кодирующие Стандартные Нарушения Не Появляются как ожидалось.

Примеры

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

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

#include <cstdint>
#define \U0000231AMACRO(x) (x)     // Noncompliant
void €uro(){            // Compliant 
	std::int32_t €uro;    // Compliant
	std::int32_t \U0000231Ahello; // Noncompliant
	wchar_t wc = '\U0000231A';    // Compliant
	std::int32_t Hello\U0000231AWorld;  // Noncompliant
}
typedef struct \U0000231Astruct {    // Noncompliant
	std::int32_t regular; 
	std::int32_t €uro;                // Compliant 
	std::int32_t \U0000231Ahello;     // Noncompliant
} \U0001f615type;                // Noncompliant

main(){
	//...
}

Переменная \U0000231Ahello объявляется с помощью универсального имени персонажа. Такое имя переменной затрудняет использование и делает код сбивающим с толку. Polyspace отмечает использование универсальных имен персонажей вне символьного или строкового литерала.

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

Группа: Лексические соглашения
Категория: необходимый, автоматизированный
Введенный в R2020a