Создание библиотеки
- Войдите на сайт для отправки комментариев
Чт, 28/06/2018 - 12:38
как в билиотеке прописать переменные, структуры, которые описаны в глобальном модуле .ino
и к ним идёт обращение из библиотеки
как в билиотеке прописать переменные, структуры, которые описаны в глобальном модуле .ino
и к ним идёт обращение из библиотеки
в какой билиотеке?
Какой мощный наброс...
скажем так термин "библиотека" не совсем верный для данного применения, но какой правильный термин использовать - пока не знаю.
есть "проект" т..е. .ino в нем есть функция zzzzz, которая использует глобальные переменные, сруктуры
хочу эту функцию вынести в "библиотеку" в файлы .h и .cpp, которые будут находиться в папке с .ino
как это правильно оформить?
ну дак написать обьявления в .h файл, реализацию в .cpp файл, в основном .ino написать #include "xxx.h" и сё.
ну дак написать обьявления в .h файл, реализацию в .cpp файл, в основном .ino написать #include "xxx.h" и сё.
см. ключевое слово extern
как в билиотеке прописать переменные, структуры, которые описаны в глобальном модуле .ino
и к ним идёт обращение из библиотеки
Вообще-то, лучше - никак, это пример ужасного говнопроектиирования.
как в билиотеке прописать переменные, структуры, которые описаны в глобальном модуле .ino
и к ним идёт обращение из библиотеки
Вообще-то, лучше - никак, это пример ужасного говнопроектиирования.
вынести из в свои маленькие фыйлики
см. ключевое слово extern
такова в райской Яве нету.
в ,cpp есть
extern STRto9100* st;
где STRto9100 глобальная структура,
компилятор пишет 'STRto9100' does not name a type
как правильно описать структуру?
#include "my_structures.h"
Полагаю, что название файла отражает идею...
#include "my_structures.h"
Полагаю, что название файла отражает идею...
Ну тип STRto9100 не объявлен. Ясно же написано. Хотите конкретики - давайте код.
госспадя. ну почитай уже Кернигана, а?
вот, лиарьна, 90% вопросов отпадут.
Xxx06.h
Xxx06.cpp
что у меня не правильно?
JonHappy1 - думаю, ЕвгенийП имеет ввиду, что при правильном подходе функции из библиотеки не должны обращаться к глобальным переменным основной программы.
В отдельный файл обычно выносятся самодостаточные функции и методы. Если им нужно обращаться к глобальным переменным - то значения глобалов нужно передавать этим функциям в виже параметров.
[/quote]
и вся программа в итоге переедет в тот файл :)
А смысл в чем? бред же...
JonHappy1 - думаю, ЕвгенийП имеет ввиду, что при правильном подходе функции из библиотеки не должны обращаться к глобальным переменным основной программы.
В отдельный файл обычно выносятся самодостаточные функции и методы. Если им нужно обращаться к глобальным переменным - то значения глобалов нужно передавать этим функциям в виже параметров.
если всё в одном ino всё работает нормально.
у меня эти функции самодостаточны, и когда они в одном файле - слишком много писанины, когда отлаживается только одна такая функция, более наглядно и удобно когда она в отдельном файле
что у меня не правильно?
В строке №11 используется тип STRto9100. Не вижу, чтобы он был где-то описан.
Кстати, в Яве такое делать тоже нельзя (и в Паскле нельзя). Какие языки Вы ещё "знаете"?
Впервые вижу такой экстравагантный способ использования класса и функций. Все чаще понимаю, что как-то скучно живу.
JonHappy1, Вы совершенно верно отметили, что в Ардуино термином "библиотеки" принято называть совсем не то, что в обычном программировании.
Как правило, в Ардуино "библиотекой" называется обычная пара *.h/*.cpp, которая в стандартном случае является обычной составляющей проекта.
При этом обычено:
- в *.h файле описываются все необходимые классы и структуры, а также функции, которые можно использовать в основной программе (в случае Ардуино - *.ino),
- в файле *.cpp или *.c записывается реализация того, что описано в *.h,
- экзампляры классов, как правило, создаются в *.ino, хотя бывают и исключения, связанные со спецификой аппаратуры.
Впервые вижу такой экстравагантный способ ...
Определение такому способу я дал в самом последнем слове поста #7. ТС с ним не согласен, но это его проблема. Доказывать что-то я не буду. Зачем, когда человек сам всё знает и так уверен в себе? :)))
В строке №11 используется тип STRto9100. Не вижу, чтобы он был где-то описан.
он описан в ino. вопрос как его описать и где? чтоб тут был понятен?
Определение такому способу я дал в самом последнем слове поста #7.
то, что кто-то дал какое-то опрделение не означает того, что это небудет работать, это означает, что кому-то просто не нравится, или кто-то не может ответить как это сделать
Впервые вижу такой экстравагантный способ использования класса и функций. Все чаще понимаю, что как-то скучно живу.
я не отрицаю, что это экстравагантно, я не претендю на истину, я просто учусь, как сделать желаемое не экстровагантно?
Да я понимаю (думаю, что понимаю) отчего такая акробатика на трубах. Вы свою явовскую рефлексию пытаетесь протащить теми способами, которые на тот момент казались оптимальными - вызываете функцию "по имени", но не знаете, как туда внести данные, которые уже существуют в системе. И вот начинается пляска с extern.
Остановитесь. Сделайте на switch/if и простых вызовах функций с параметрами по ссылке. Заработает - начнете наворачивать диспетчера какие-нить. Я до сих пор сижу на уродском многостраничном switch-e, но он простой и эффективный как палка в условиях ограниченного по ресурсам МК. Надо выключить фичи - отхреначил ему половину ветвей условной компиляцией. Включить - активировал. Отлаживать тоже проще простого. А вот это таскание глобалов по классам и последующий поиск где и что туда вписалось вместо нормальных данных - это какое-то извращение.
Та уже вынесете же свой STRto9100 в отдельный .h и .c. И подключайте его. И в Xxx06.h, и в .ino и везде где надо.
Остановитесь. Сделайте на switch/if и простых вызовах функций с параметрами по ссылке.
ага вот будет лесенка из 30 switch/if
Вы к дачному домику тоже скоростной лифт будете сразу пристраивать?
Впервые вижу такой экстравагантный способ использования класса и функций. Все чаще понимаю, что как-то скучно живу.
я не отрицаю, что это экстравагантно, я не претендю на истину, я просто учусь, как сделать желаемое не экстровагантно?
https://45parallel.net/daniil_kharms/plikh_i_plyukh.html
Это я к тому что если у Вас установлена среда Ардуино. То окрывайте и читайте как в ней организованы библиотеки.
Та уже вынесете же свой STRto9100 в отдельный .h и .c. И подключайте его. И в Xxx06.h, и в .ino и везде где надо.
покажи пример синтаксиса как это сделать/
у меня ругается
conflicting declaration 'typedef struct STRto9100 STRto9100'
Это я к тому что если у Вас установлена среда Ардуино. То окрывайте и читайте как в ней организованы библиотеки.
дак не нашё ничего того как мне надо сделать. везде опсания хеллоу ворд....
Щя все брошу и пойду показывать как модуль оформлять и подключать. Чюдо! Те тока на заборе хер писать! Ты ж нулевый в коде не взирая на язык. Вали читать букварь с картинками, реефлектор.
Ты ж нулевый в коде не взирая на язык.
я разве спорюс этим? мне надо сделать так, я в инет не нашёл , как это реализовать, вот и спрашиваю, ты здесь у же кучу написал, а напиши кусочек как правльно мне реализовать желаемое , и топик давно б закончился
"программист", бл-ть!
Что бы научится программирования надо регулярно читать чужой код, а если непонятные места , то гугл и литература.
Точнее наверное регулярно читать чужой правильный код, осталось как-то определиться с этой самой правильностью
"программист", бл-ть!
Что бы научится программирования надо регулярно читать чужой код, а если непонятные места , то гугл и литература.
Точнее наверное регулярно читать чужой правильный код, осталось как-то определиться с этой самой правильностью
Эта фраза либо враньё, либо "альтернативные факты". Вы напрочь игнорируете то, что Вам говорят - на всё у Вас возражения и Вы всё знаете лучше, а сами
наелись стирального порошкуне знаете что делать с сообщениему меня ругается
conflicting declaration 'typedef struct STRto9100 STRto9100'
Так не учатся.
он описан в ino. вопрос как его описать и где? чтоб тут был понятен?
Я Вас просил показать код. Вы его, оказывается, не показали. Мне доагдываться, что у Вас там и как? Не буду. Хрустальные шары здесь запрещены.
И да, ну, мля, в 100500-ый раз повторяю за коллегами, ну сделайте Вы милость, прочитайте наконец K&R!
а это не код? http://arduino.ru/forum/programmirovanie/sozdanie-biblioteki-0#comment-376870
а это не код? http://arduino.ru/forum/programmirovanie/sozdanie-biblioteki-0#comment-376870
код чего тогда?
Эти определения в .ino компилируются?
Если нет, то какая ошибка?
а это не код? http://arduino.ru/forum/programmirovanie/sozdanie-biblioteki-0#comment-376870
Простите, но это уже ни в какие ворота не лезет. Вы альтернативно одарены? По поводу того кода я Вам написал
В строке №11 используется тип STRto9100. Не вижу, чтобы он был где-то описан.
Выяснилось, что оно у Вас описано где-то, в каком-то .ino, который Вы и не подумали показать. Как описано - ХЗ. Мне надо догадываться как Вы, с Вашей квалификацией, исхитрились его описать? Это Вы называете "показать код"?
не только компилируется, нои прекрассно работает
ну, слава Богу!
Ну и где здесь описан тип данных STRto9100? Переменную с таким именем вижу, типа - нет. Вы тип данных от имени переменной вообще-то отличаете?
c 19 по 25 строку
Как он тогда "прекрасно работает"?
Я - все. Помогите мне развидеть эту тему. Афтар, пока не прчтешь K&R, не ходи сюда больше.
Пойду я, лучше, закусь пожарю. Удачи.
если всё в одном ino, товсё работает как надо