Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 20.11.2019, 11:02  
vladh
Почётный гражданин KAZUS.RU
 
Регистрация: 03.12.2004
Сообщений: 1,264
Сказал спасибо: 330
Сказали Спасибо 74 раз(а) в 31 сообщении(ях)
vladh на пути к лучшему
По умолчанию Почему Keil "недоволен"?

Уважаемые, подскажите. Работаю в Кейле. Пытаюсь создать массив в котором хочу сохранять параметры работы моего изделия. Вначале объявляю массив:
uint16_t param[32];
В следующей строке начинаю определять элементы массива:
uint16_t param[0]=0x10;
но компилятор мне пишет:"ошибка 144, значение типа " int " не может использоваться для инициализации записи типа uint16_t param[32]".
Я никак не могу въехать, что в моей записи неверно.
Реклама:
vladh вне форума  
Непрочитано 20.11.2019, 11:23  
Ivan_fd
Прописка
 
Регистрация: 04.02.2007
Адрес: Украина
Сообщений: 126
Сказал спасибо: 44
Сказали Спасибо 29 раз(а) в 20 сообщении(ях)
Ivan_fd на пути к лучшему
По умолчанию Re: Почему Keil "недоволен"?

Может использовать приведение типов?

Да и зачем Вы, когда определяете элементы массива, опять пишете его тип?

uint16_t param[0]=0x10;
Ivan_fd вне форума  
Непрочитано 20.11.2019, 11:26  
dgrishin
Почётный гражданин KAZUS.RU
 
Регистрация: 12.02.2013
Сообщений: 1,015
Сказал спасибо: 43
Сказали Спасибо 273 раз(а) в 214 сообщении(ях)
dgrishin на пути к лучшему
По умолчанию Re: Почему Keil "недоволен"?

Сообщение от vladh Посмотреть сообщение
Я никак не могу въехать, что в моей записи неверно.

Вы дважды определяете массив c одним именем.

Правильнее было бы
uint16_t param[32] = {0x10, и т. д. };
dgrishin вне форума  
Непрочитано 20.11.2019, 11:49  
vladh
Почётный гражданин KAZUS.RU
 
Регистрация: 03.12.2004
Сообщений: 1,264
Сказал спасибо: 330
Сказали Спасибо 74 раз(а) в 31 сообщении(ях)
vladh на пути к лучшему
По умолчанию Re: Почему Keil "недоволен"?

Сообщение от Ivan_fd Посмотреть сообщение
Может использовать приведение типов?

Да и зачем Вы, когда определяете элементы массива, опять пишете его тип?

uint16_t param[0]=0x10;
Я, к сожалению, не знаю, что такое приведение типов. А то что я при определении значения вновь указал тип, то это автоматом. Вот узнал, что надо делать правильно так:
uint16_t param[32];
void init_array()
{
param[0]=1;
param[1]=0;
....
}
vladh вне форума  
Непрочитано 20.11.2019, 11:51  
vladh
Почётный гражданин KAZUS.RU
 
Регистрация: 03.12.2004
Сообщений: 1,264
Сказал спасибо: 330
Сказали Спасибо 74 раз(а) в 31 сообщении(ях)
vladh на пути к лучшему
По умолчанию Re: Почему Keil "недоволен"?

Сообщение от dgrishin Посмотреть сообщение
Вы дважды определяете массив c одним именем.

Правильнее было бы
uint16_t param[32] = {0x10, и т. д. };
Так тоже не проходит.
vladh вне форума  
Непрочитано 20.11.2019, 12:37  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,856
Сказал спасибо: 2,532
Сказали Спасибо 11,772 раз(а) в 5,896 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Почему Keil "недоволен"?

Сообщение от vladh Посмотреть сообщение
Работаю в Кейле
В каком? В 5.2х не встречался с таким.
Сообщение от vladh Посмотреть сообщение
uint16_t param[0]=0x10;
но компилятор мне пишет:"ошибка 144, значение типа " int " не может использоваться для инициализации записи типа uint16_t param[32]".
Попробуйте
param[0]=(uint16_t)0x10;
это будет явное указание компилятору, что значение не "int". Так должно пройти.

Сообщение от dgrishin Посмотреть сообщение
Вы дважды определяете массив c одним именем.
Без значений - объявление, а "определение" - задание определенных значений. Но компилятор может и не делать разницы на уровне "правописания", а просто вывалить ошибку. Многие перед переменной ставят тип с целью борьбы со склерозом, только нужно это делать по типу "явного преобразования типа", т.е., помещать в скобки. Тогда ругани не будет.

ПС Указание типа перед именем переменной - объявление/определение и правильно Кейл бычится. А вот описание ошибки не всегда бывает корректным.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.

Последний раз редактировалось akegor; 20.11.2019 в 12:40.
akegor вне форума  
Непрочитано 20.11.2019, 12:50  
vladh
Почётный гражданин KAZUS.RU
 
Регистрация: 03.12.2004
Сообщений: 1,264
Сказал спасибо: 330
Сказали Спасибо 74 раз(а) в 31 сообщении(ях)
vladh на пути к лучшему
По умолчанию Re: Почему Keil "недоволен"?

Сообщение от akegor Посмотреть сообщение
В каком? В 5.2х не встречался с таким.
5.28
"Попробуйте
param[0]=(uint16_t)0x10;
это будет явное указание компилятору, что значение не "int". Так должно пройти."
Попробовал. Кейл выдал кучу ошибок.
А вот то, что я указал на тип и в объявлении и в определении Кейл выдал не ошибку, а замечание.

Последний раз редактировалось vladh; 20.11.2019 в 12:53.
vladh вне форума  
Непрочитано 20.11.2019, 13:23  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,856
Сказал спасибо: 2,532
Сказали Спасибо 11,772 раз(а) в 5,896 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Почему Keil "недоволен"?

Сообщение от vladh Посмотреть сообщение
Кейл выдал не ошибку, а замечание.
Тоже "не айс". Есть элемент непредсказуемости результата.
Сообщение от vladh Посмотреть сообщение
Кейл выдал кучу ошибок.
Значит, посчитал, что "не царское это дело - присваивать значения элементам массива на этапе компиляции".
Странно, что не хочет определять массив, допускает только объявление.
Нет сейчас Кайла под рукой - систему переустанавливаю, переначиняю, перенастраиваю... Проверил бы в 5.23
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Непрочитано 20.11.2019, 13:52  
vladh
Почётный гражданин KAZUS.RU
 
Регистрация: 03.12.2004
Сообщений: 1,264
Сказал спасибо: 330
Сказали Спасибо 74 раз(а) в 31 сообщении(ях)
vladh на пути к лучшему
По умолчанию Re: Почему Keil "недоволен"?

Я ранее вот так определял:
uint16_t param[32]={0x10,0x11,0x12};
Но почему то сейчас решил сделать по другому.
vladh вне форума  
Непрочитано 20.11.2019, 14:05  
vladh
Почётный гражданин KAZUS.RU
 
Регистрация: 03.12.2004
Сообщений: 1,264
Сказал спасибо: 330
Сказали Спасибо 74 раз(а) в 31 сообщении(ях)
vladh на пути к лучшему
По умолчанию Re: Почему Keil "недоволен"?

Вспомнил почему решил найти другой способ. Если определять этим способом, то строчка с значениями становится длинной и неудобочитаемой. А как сделать правильно перенос на другую строку я не знаю.
vladh вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с переходом на компилятор C/C++ v6 в Keil Donker ARM 0 26.11.2018 23:49
Keil C51 и volatile. Массив, изменяемый в обработчике прерывания - volatile? ArtemKolesnikov Микроконтроллеры, АЦП, память и т.д 3 07.01.2017 23:14
Почему дёшевы IRG4BC40 и CT30TM-8? _Cahes_ Информация по радиокомпонентам 2 23.06.2016 22:39
почему не ds18b20?? индюк Делимся опытом 20 18.05.2016 19:03
Почему не устанавливается Google Chrome Electric75 Делимся опытом 20 20.09.2015 23:04


Часовой пояс GMT +4, время: 17:47.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot