Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V2677. MISRA. String literals with different encoding prefixes should not be concatenated.

30 Июл 2026

Диагностическое правило основано на руководстве MISRA (Motor Industry Software Reliability Association) по разработке программного обеспечения.

Правило актуально только для C ++.

Анализатор обнаружил в коде фрагмент, где происходит автоматическое объединение строковых литералов с разными префиксами кодировок.

Конкатенация строковых литералов с разными префиксами вызывает конфликт типов данных элементов строки (например, char и wchar_t). Компилятор не может корректно определить итоговый тип и размерность результирующего литерала. В зависимости от настроек сборки, это приводит либо к ошибке компиляции, либо к неопределённому поведению из-за некорректного приведения типов, что полностью искажает байтовое представление символов в памяти.

Некорректный вариант кода:

const wchar_t *banner = "Hello," L" world";

При конкатенации строкового литерала без префикса со строковым литералом с префиксом L типы данных конфликтуют, из-за чего компилятор не может безопасно собрать единый литерал.

Исправленный вариант кода:

const wchar_t *banner = L"Hello," L" world";

Ты поймал бага за сек!
А мы в коде ловим их за доли секунды. Хочешь проверить?

Попробовать бесплатно