Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2022, 07:56   #1
geb2010
Пользователь
 
Регистрация: 15.10.2012
Сообщений: 25
По умолчанию ошибки при компиляции

Здравствуйте !
В программе мне нужно создать массив СТРОК и массив чисел.
При компиляции программы в Ардуино IDE появляется сообщение:

- \\settime_Dom.ino:80:70: warning: narrowing conversion of '262645l' from 'long int' to 'int' inside { } [-Wnarrowing]
- \settime_Dom.ino:82:19: warning: multi-character character constant [-Wmultichar] .

Я понял так, что в строках 80 и 82 находятся не совсем правильная записи

- 80: int AdrMark[] = { 0,0x401f5,0x401f7,0x401f9,0x401fb,0 x401fd,0x401ff };
- 82: char *StrMas[] = { 'K0','K1','K2','K3','K4' };

В них я объявляю массивы.

Подскажите, пожалуйста, в чем моя ошибка при объявлении массива указателей ?
С уважением Геннадий.
geb2010 вне форума Ответить с цитированием
Старый 11.08.2022, 08:23   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 6,872
По умолчанию

Про AdrMark - скорее всего, вы выбирали в качестве целевой 16битную плату (тип int имеет размер 16бит), а константы у вас больше 16бит, вот они и "обрезаются". Про StrMas - попробуйте заменить одинарные кавычки на двойные.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 11.08.2022, 08:36   #3
macomics
Форумчанин
 
Регистрация: 17.04.2022
Сообщений: 844
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Про AdrMark - скорее всего
Нет. Он ругается на конкретное значение (см. сообщение о предупреждении: 262645l). В конце стоит указание, что число длинное (long int), а тип массива int
Остальные константы (20-битные) он не обозначил. Значит код 32-битный и тип int 32-битный. Но вот именно та константа длиннее чем тип int

Перевел 262645l - получил 0x401F5. А это второй элемент в массиве. Скорее всего точно 16-битный int


Цитата:
Сообщение от BDA Посмотреть сообщение
Про StrMas - попробуйте заменить одинарные кавычки на двойные.
Тогда будет ошибка несоответствия типов (тип char и тип char * / string). Если и заменять, тогда еще и тип массива надо изменить на двухбайтовый.

Последний раз редактировалось macomics; 11.08.2022 в 08:55.
macomics вне форума Ответить с цитированием
Старый 11.08.2022, 11:39   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,143
По умолчанию

Цитата:
Сообщение от macomics Посмотреть сообщение
Тогда будет ошибка несоответствия типов (тип char и тип char * / string). Если и заменять, тогда еще и тип массива надо изменить на двухбайтовый.
Чего? "K0" будет const char*, а StrMas итак массив char*
p51x вне форума Ответить с цитированием
Старый 12.08.2022, 21:28   #5
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 715
По умолчанию

geb2010,
Код:
int AdrMark[] = { 0,0x401f5,0x401f7,0x401f9,0x401fb,0x401fd,0x401ff };
const char* StrMas[] = { "K0","K1","K2","K3","K4" };
Алексей1153 вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибки компиляции Kake Общие вопросы C/C++ 2 15.02.2019 18:01
Ошибки компиляции allbazer C# (си шарп) 5 24.05.2018 14:00
Ошибки при компиляции sarkolk Общие вопросы C/C++ 27 22.08.2012 18:54
Ошибки при компиляции Tinny Общие вопросы C/C++ 7 30.06.2011 10:00
ошибки при компиляции |{ot Общие вопросы Delphi 14 02.08.2008 01:20