exponenta event banner

Правило AUTOSAR C++ 14 A2-13-6

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

Описание

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

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

Объяснение

Универсальные имена символов - это способ представления символов Юникода с помощью кодовых точек. Например, \U0000231A представляет символ Юникода «» ⌚ «». При использовании универсальных имен символов для определения идентификатора трудно прочитать исходный код. Использование универсальных имен символов в качестве идентификатора является запутанным и неприятным. Избегайте использования универсальных имен символов вне символьного или строкового литерала.

Внедрение Polyspace

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

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

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

Примеры

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

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

#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