MISRA C++:2008 Rule 2-13-5

Узкие и широкие строковые литералы не должны быть сцеплены

Описание

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

Узкие и широкие строковые литералы не должны быть сцеплены.

Объяснение

Узкие строковые литералы заключаются в двойные кавычки без префикса. Широкие строковые литералы заключаются в двойные кавычки с префиксом L вне кавычек. См. строковые литералы.

Конкатенация узких и широких строковых литералов может привести к неопределенному поведению.

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

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

Примеры

расширить все

char array[] = "Hello" "World";
wchar_t w_array[] = L"Hello" L"World";
wchar_t mixed[] = "Hello" L"World"; //Noncompliant

В этом примере - в инициализации массива mixed, узкий строковый литерал "Hello" конкатенация с широкой строкой буквальным L"World".

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

Группа: Лексические конвенции
Категория: Требуемая
Введенный в R2013b