Russian Qt Forum
Апрель 18, 2024, 19:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: error: initializer-string for char array is too long  (Прочитано 4211 раз)
berzerk
Новичок

Offline Offline

Сообщений: 9


Просмотр профиля
« : Январь 12, 2022, 13:52 »

Кодировка файлов в проекте выбрана Windows-1251. В редакторе висит куча "выдуманных" предупреждений "error: initializer-string for char array is too long".
Данные предупреждения формируются "clang code model"? можно ли от них избавиться без отключения проверки размеров массивов?
Записан
DarkHobbit
Самовар
**
Offline Offline

Сообщений: 189


Просмотр профиля
« Ответ #1 : Январь 15, 2022, 08:32 »

Кодировка файлов в проекте выбрана Windows-1251.

Про clang не подскажу, но корень ваших проблем - здесь. Не надо так делать. Да, часть проблем решается через принудительное задание кодеков и др., но рано или поздно косяки вылезут.

Я в своё время прогнал исходники через enca, теперь там только UTF-8.

(Ещё более правильный путь с точки зрения Qt - вообще не допускать в исходниках никаких нелатинских символов, русские и прочие строки держать в файлах переводов. Но для проекта, который никогда не выйдет за пределы России, это сильно избыточный подход, да.)
Записан

Мои проекты на Qt: DoubleContact, LInvert
berzerk
Новичок

Offline Offline

Сообщений: 9


Просмотр профиля
« Ответ #2 : Январь 15, 2022, 10:23 »

Код отлаживается на ПК, но его основная цель - микроконтроллер. Хранить и обрабатывать строки в МК на много проще и выгоднее в кодировке windows-1251. Я не знаю способа, по крайней мере простого, для смены кодировки файлов во время сборки проекта.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #3 : Январь 15, 2022, 16:44 »

Я не знаю способа, по крайней мере простого, для смены кодировки файлов во время сборки проекта.
этого можно добиться с помощью генерации файла в нужной кодировке во время сборки. в utf-8 будет файл-шаблон (логичнее всего в нем держать только нужные строки и ничего больше), а системе сборки задать «правило» для генерации конечного файла с помощью, например, iconv. Этот же файл и будет потом компилироваться, а не шаблон.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
berzerk
Новичок

Offline Offline

Сообщений: 9


Просмотр профиля
« Ответ #4 : Январь 18, 2022, 16:06 »

Спасибо за помощь. Я до последнего надеялся что можно все решить стандартными средствами IDE.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #5 : Январь 18, 2022, 16:36 »

Спасибо за помощь. Я до последнего надеялся что можно все решить стандартными средствами IDE.
не знаю поможет ли, попробуй добавить -finput-charset=windows-1251 (может кодировка по-другому называется) в настройки — C++ — Code Model — build system warnings — скопировать одну из существующих и вписать параметр в нижнее поле
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
berzerk
Новичок

Offline Offline

Сообщений: 9


Просмотр профиля
« Ответ #6 : Январь 19, 2022, 09:02 »

Ранее встречал упоминание о том, что поле "Clang Warning" предназначено только для управления проверками. На деле так и получилось. Ошибка конфигурации выдается на все что не начинается с "-W" и такие опции просто удаляются.
Записан
DarkHobbit
Самовар
**
Offline Offline

Сообщений: 189


Просмотр профиля
« Ответ #7 : Январь 21, 2022, 09:12 »

Хранить и обрабатывать строки в МК намного проще и выгоднее в кодировке windows-1251.
А что уж тогда не в канонiчном КОИ8-Р?  Смеющийся
Записан

Мои проекты на Qt: DoubleContact, LInvert
berzerk
Новичок

Offline Offline

Сообщений: 9


Просмотр профиля
« Ответ #8 : Январь 21, 2022, 10:15 »

Если объясните что вызвает смех в этих словах, то может быть посмеюсь вместе с вами.
Записан
DarkHobbit
Самовар
**
Offline Offline

Сообщений: 189


Просмотр профиля
« Ответ #9 : Январь 21, 2022, 15:04 »

Если объясните что вызвает смех в этих словах, то может быть посмеюсь вместе с вами.
Это не смех, а добрая улыбка. Ну правда, вы же из однобайтовых кодировок почему-то сразу виндовую вспомнили, а она, хм, не самая "классическая".
Записан

Мои проекты на Qt: DoubleContact, LInvert
berzerk
Новичок

Offline Offline

Сообщений: 9


Просмотр профиля
« Ответ #10 : Январь 21, 2022, 17:15 »

Стандартная кодировка в Windows. Я даже и не задумывался о влиянии кодировки файла С++ проекта на работу программы в микроконтроллере. Этот "нюанс" вспыл на мно-о-о-го позднее, когда я последовал моде и создал новый проект в utf-8. И  прошло еще мно-о-о-го лет до текущего момента, когда я решил расстаться с Eclipse и получил желтый от предупреждений в проекте экран.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.052 секунд. Запросов: 22.