MISRA C ++:2008 правил 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