Это азы языка, которых вы не знаете. Какие еще аргументы нужны????
В двух словах уже объяснял - в хэдерах не может быть определений могут быть только объявления. Все сущности только в исходниках. Которые кстати могут быть не только текстовыми файлами но и уже скомпилированными библиотеками.
И вам лучше начать исправлять свои пробелы. Читайте классику и что нибудь из лекций. Например Линский основы С++ . В первых лекциях доходчиво объясняет основные принципы .
День добрый уважаемые. Хочу задать вопросик по mikroC и, наверное, вообще по PIC. Сам я AVRщик, и привык к хидерам вида ioavr.h, где описаны регистры периферии. Открываю mikroC, создаю проект, начинаю искать хидер по папке среды (как у меня сделано в ИАРе). Не нахожу. Беру какой-то проект из инета (первый раз сел за PIC, прошу учитывать). Пытаюсь компилить, он ругается на какие-то строчки, я их коменчу, таки компилю, запускаю в протеусе - работает. странно. Кароче, правильно ли я понимаю, что имена портов, регистров "вшиты" в mikroC? и хидеров не надо?
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Я пишу в микро Си не только для пиков но и для АВР, поэтому его и выбрал, что на одной программе можно писать под 2 семейства Например для того чтобы поморгать светодиодом никаких хилдеров не надо, всё подключается автоматом при создании проекта при выборе микроконтроллера, а если хочешь использовать библиотеку, например символьный LCD то просто подключаешь библиотеку во вкладке Library Manager.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
я по той же причине выбрал иар (есть все кроме PIC ) слушайте, только что игрался в микро с. на конструкцию вида
Код:
char digs[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; portc=0; //to clear port portd=0; trisc=0; //as output trisd=0; //as output int i;
получаю ошибку. странно, сижу, всмативаюсь в код, а ж в глазах темнеет. потом делаю вот так, поскольку привык к любым поворотам в жизни.
Код:
char digs[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; int i; portc=0; //to clear port portd=0; trisc=0; //as output trisd=0; //as output
и оно компилится. Они что серьезно? Это где-то настраивается, или такое поведение вшито в среду? если вшито и не настраивается, то я не знаю чем они думают. Идем дальше. Конструкции вида for(char k=0; k<=8; k++){...} не юзабельны. Где в среде настраивается компилятор, я не нашел (стандарты языка С, С или С++ использую и т.д.). Вроде симпатичная программка, но такого шлака не ожидал.
Идем дальше. Конструкции вида for(char k=0; k<=8; k++){...} не юзабельны. Где в среде настраивается компилятор, я не нашел (стандарты языка С, С или С++ использую и т.д.). Вроде симпатичная программка, но такого шлака не ожидал.
Странно что вы не знаете, что такое стандарты и расширения.
Странно что вы не знаете, что такое стандарты и расширения.
Я как раз догадался что это связано с расширениями языка. Какое именно это расширение или стандарт, меня абсолютно не интересует. У меня даже нет претензий что прога что-то не поддерживает. Но! Схерали, извините, она пишет ошибку что у меня скобочка не там, если проблема в том, что ей не нравится что я объявил переменную не там где надо? такс, качаю MP Lab (не зря мне микро с, во времена старта на аврках, не приглянулся).
Кстати да, замечал такое дело: сначала идёт описание переменных а потом уже присвоение значений регистрам. Если пытаешься объявить переменную в середине функции то он будет сильно ругаться. Я обычно глобальные переменные объявляю до main, а настройка портов идёт уже в самом теле main, тогда проблем не возникает. Кстати в MikroC есть куча рабочих примеров, почти для всех имеющихся встроенных библиотек, очень удобно для стартапа
"Работая", а точней играясь с микроС , вы не изучаете С как таковой, а страдаете х*""ней. Ибо , как было уже не раз озвучено , микроС компилятор языка внешне похожего на С , но не С.
Добавлено after 4 minutes 33 seconds:
Ярослав555 писал(а):
Но! Схерали, извините, она пишет ошибку что у меня скобочка не там, если проблема в том, что ей не нравится что я объявил переменную не там где надо?
Приучайте себя к порядку, а не к барсико подобным выходкам. Переменные должны быть определены только в начале блока, а не там где вам прихотнулось.
Внесу свою лепту: конечный - итог это готовое устройство, а на чём написано это устройство на С на псевдо С это никому не интересно, если устройство работает как надо, то заказчик готов заплатить за него деньги, и ему наплевать на чём оно было написано.
dosikus писал(а):
Приучайте себя к порядку, а не к барсико подобным выходкам. Переменные должны быть определены только в начале блока, а не там где вам прихотнулось.
Внесу свою лепту: конечный - итог это готовое устройство, а на чём написано это устройство на С на псевдо С это никому не интересно, если устройство работает как надо, то заказчик готов заплатить за него деньги, и ему наплевать на чём оно было написано.
Да, такова нынешняя тенденция -сляпать абыкакработало и побыстрей втюхать. Однако все это чревато, во первых из-за закрытых либ протестировать полностью устройство вам не удастся , во вторых время подобных ляповатых "разработчиков" заканчивается- заказчику уже не надо абыкак, ему нужны гарантии . А абыкаки их дать не могут...
Ты не поверишь, но все мои проекты работают как надо и уже не первый год, так что выражение "абы как" здесь не к месту. А накосячить в коде можно на любой программе и на любом языке, это зависит от рук пишущего.
Ты не поверишь, но все мои проекты работают как надо и уже не первый год...
А вот такие заявления слышал неоднократно. Причем PIC при этом запитан от 9В и тактируется от резонатора на 25MHz. При этом ещё добавляют: "На разных моделях PIC", и перечисляют: "PIC16F84, PIC16F628 ну и на многих других" Вам раз пять предлагали почитать наконец нормальную литературу по Си, но Вы по-прежнему недоумеваете :
alex_ писал(а):
...Если пытаешься объявить переменную в середине функции то он будет сильно ругаться...
Так что про "не первый год" лично мне как-то не очень верится. Или-же у Вас какие-нибудь китайские годы ( про китайские ватты многие, наверное, слышали ), или-же уж совсем простые устройства, в которых ломаться просто нечему. Захотите опровергнуть, покажите хотя-бы пару Ваших разработок, которые работают годами.
во первых: тема данного форума называется - "вопрос по mikroc" только mikroc здесь похоже никому не интересен, а собрались люди которых хлебом не корми, тянет на нравоучения. Вообще то форум нужен для того чтобы помочь товарищу советом, а не слать его со всеми вопросами на 6 букв(Google).
во вторых: какой бы не был язык си, он существует в разный интерпритациях: mikroc, MP Lab, Borland C++Builder, AVR Studio. Во всех есть свои тонкости, и если что то работает в одном не факт что будет работать в другом, поскольку синтаксис различается.
в третьих: То что мои заказчики довольны это факт, а то что там думают: Хилари, Порошенко, Псаки и все остальные мне на них глубоко . . . не перед ними я отчитывался.
и напоследок: никто мне не указ: как писать программы, как держать паяльник и с кем спать.
Поэтому процитирую нашего уважаемого модератора Alex'a: "Я мненью вашему вращенье придавал, а осью был - мой детородный орган."
PS: тему можно закрывать, так как кроме флуда и нравоучений в ней ничего полезного нет.
Напишу по теме . Если, например, я хочу хранить в статическом массиве некие данные (меню) и в том числе адрес переменной, в которой хранятся данные для очередного пункта меню, то... нужно использовать указатель? Но MikroC против такого внутри статического массива. Если использовать директиву абсолют для переменной (а в массиве хранить число - как указатель), то... компилятор не обращает внимания что регистр занят мной и пихает туда другие переменные, так что видимо придется самому всю память размечать? Решил вопрос так: храню порядковый номер в статическом массиве для массива переменных и для вычисления тратится много памяти. Есть ли более оптимальное решение?
Не могли бы вы написать как правильно? И еще как правильно изменить с помощью указателя старший байт двухбайтовой переменной, вот так *((char*)&data_unsiged_int + 1) выглядит как-то некрасиво...
во-первых, как вы задаете значение указателя в статическом массиве? во-вторых, как вы сам элемент массива описали? как правильно - я не могу написать, потому как правильных способов может быть несколько. легче указать на ваши ошибки, если таковые реально есть.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
1 )Вот так не работает. char a = 10; unsigned int arr = {1 , &a}; p1 = *arr[1];
А если попробывать p1 = *((char*)arr[1]) то, кстати, работает, но как правильно?
2) А вот другой вопрос: как правильно изменить с помощью указателя старший байт двухбайтовой переменной, вот так *((char*)&data_unsiged_int + 1) допустимо ли писать?
3) Директива абсолют может ли работать совместно с разметкой ОП компилятора?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения