как получть доступ к структуре из соседнго .ino файла
- Войдите на сайт для отправки комментариев
Чт, 04/11/2021 - 01:25
как получить доступ к структуре из соседнего .ino файла?
через extern не получается, только обычные переменные. помогите, пж.
// файл 1
void loop() {
qw.a = 5; // ошибка.
}
// файл 2
struct {
byte a;
}qw;
? Структура это теперь не обычная переменная? И учебники отменили, разве? Так и будешь на каждый чих в форум лезть?
? Структура это теперь не обычная переменная? И учебники отменили, разве? Так и будешь на каждый чих в форум лезть?
два дня мучаюсь по книжкам и знакомый не помог.
После рецепта Ркита сложно пытаться еще добавить смысла)) Я попробую. У нелюбимого тут Gyverа есть понятная страничка о библиотеках. Там, в принципе, все подробно.. Это самый легкий путь. А так то, да.. учебники...
напишите как нужно пж. гувера читал там этого нет
два дня мучаюсь
Целых ДВА ДНЯ? Ничего себе! В курсе, что программированию несколько лет учатся?
я старый ассемблерщик, помогите пж
напишите как нужно пж. гувера читал там этого нет
Там все есть для начинающих в Си. Если вы не в силах это сразу всосать - не страшно, просто нужно сделать паузу и почитать учебники (хоть страниц 80). А готовых рецептов под все свои хотелки вы не найдете.
напишите как нужно пж. гувера читал там этого нет
Там все есть для начинающих в Си. Если вы не в силах это сразу всосать - не страшно, просто нужно сделать паузу и почитать учебники (хоть страниц 80). А готовых рецептов под все свои хотелки вы не найдете.
я понимаю, я ж в песочнице пишу для новичков, а книжки читал , честно, просто уперся, есть варианты написать по другому, но вот тут решил спросить у умных
я понимаю, я ж в песочнице пишу для новичков, а книжки читал , честно, просто уперся, есть варианты написать по другому, но вот тут решил спросить у умных
Ну, супер!
Я не специалист, но посмотреть могу)). Скажите, зачем вам нужно сношаться с внешними "библиотеками", если вы не вполне ясно представляете себе, как все это работает? Объявите свою структуру глобально в основном скетче и не трахайте мозг себе и другим, пока не возникнет критическая потребность.
я понимаю, я ж в песочнице пишу для новичков, а книжки читал , честно, просто уперся, есть варианты написать по другому, но вот тут решил спросить у умных
Ну, супер!
Я не специалист, но посмотреть могу)). Скажите, зачем вам нужно сношаться с внешними "библиотеками", если вы не вполне ясно представляете себе, как все это работает? Объявите свою структуру глобально в основном скетче и не трахайте мозг себе и другим, пока не возникнет критическая потребность.
у меня не стоит задача сношаццо, у меня структурка в соседнем файле f2.ino, как получить к ней доступ из главного файла там где loop ?
у меня не стоит задача сношаццо, у меня структурка в соседнем файле f2.ino, как получить к ней доступ из главного файла там где loop ?
Это прям совсем легко. С ino не прокатит, но с с и h вполне. Еще проще, как я раньше писал, объяви структуру в основном скетче. На памяти не скажется, ибо инициализация будет в основном скетче все равно
у меня не стоит задача сношаццо, у меня структурка в соседнем файле f2.ino, как получить к ней доступ из главного файла там где loop ?
Это прям совсем легко. С ino не прокатит, но с с и h вполне. Еще проще, как я раньше писал, объяви структуру в основном скетче. На памяти не скажется, ибо инициализация будет в основном скетче все равно
спасибо за ответ, но это я все знаю, мне нужно именно из другого .ino файла, я думал, что такое возможно.
спасибо за ответ, но это я все знаю, мне нужно именно из другого .ino файла, я думал, что такое возможно.
Тебе шашечки или ехать? Сделай из ino обычный заголовочный h-файл с объявлением своей структуры и все.
так и буду делать ((
просто казалось что так проще могло быть. подкупают эти ардуиновские вкладки, а оказалось,что они не полноценные.
спасибо, что уделили время!
так и буду делать ((
просто казалось что так проще могло быть. подкупают эти ардуиновские вкладки, а оказалось,что они не полноценные.
спасибо, что уделили время!
Ардуиновские вкладки задуманы разрабами для работы с ОДНИМ скетчем. К сожалению, к ООП не имеет отношения. Sad but true ))
но функции то работают, думал и со структурками прокатит ))
но функции то работают, думал и со структурками прокатит ))
Ээээ. не нужно путать разные странички ОДНОГО скетча в ИДЕ, и подключаемые источники #include.
А так то, исходник посмотреть бы))
я к тому что функции не нужно объявлять в ино
я к тому что функции не нужно объявлять в ино
Дык, без проблем. Объяви их в своих .h и подключи в скетч. По третьему разу пошли уже с этой темой
да, так и буду делать, спасибо, с ино файликами не прокнуло. это я и хотел понять.
но функции то работают, думал и со структурками прокатит ))
прокатит, только файл, где структурка, должен быть назван так, чтобы по-алфавиту идти раньше файла основного скечча.
но функции то работают, думал и со структурками прокатит ))
прокатит, только файл, где структурка, должен быть назван так, чтобы по-алфавиту идти раньше файла основного скечча.
проверил - не прокатило. это рофл?
Дык приведи пример обоих файлов. У меня все прокатывает, у тебя - нет. Значит что-то ты не верно делаешь. )
Обманул я )) Ненароком. Сейчас открыл тот проект где много вкладок - они реализованы через .cpp и .h файлы (то есть библиотеки)....
прокатит, только файл, где структурка, должен быть назван так, чтобы по-алфавиту идти раньше файла основного скечча.
Не прокатит, потому что основной скетч первый. А остальные уже по ранжиру.
Hikss, структуру описывай в хедере, а используй в любом ino, предварительно включив хедер инклюдом.
я старый ассемблерщик, помогите пж
И что, старые ассеблерщики не могут два файла линкером связать?
Похоже , Вы ещё 19 языков знаете, только С++ в их число не входит. Угадал?
два дня мучаюсь по книжкам и знакомый не помог.
Если для Вас "два дня по книжкам" - это много, бросайте это дело. Ардуино - не для Вас.
просто казалось что так проще могло быть. подкупают эти ардуиновские вкладки, а оказалось,что они не полноценные.
Какие вкладки? В редакторе Ардуино ИДЕ? если положить файлы .cpp и .h в папку скетча, они так же будут видны во вкладках.
А делать несколько .ino в одном проекте - это говнокод в гайверовском стиле. Если Вы только учитесь - сразу учитесь писать правильно, через страндартные для Си заголовочные файлы.
Всем спасибо за помощь!
Буду делать с и срр файлики.
Буду делать с и срр файлики.
не .c и .cpp, а .h и .cpp
я понял ))
ТС! Вот это вот читал?
================================
The Arduino development software performs a few transformations to your sketch before passing it to the avr-gcc compiler:
#include <Arduino.h>
is added to the sketch. This header file (found in the core folder for the currently selected board) includes all the definitions needed for the standard Arduino core.#line
directives are added to make warning or error messages reflect the original sketch layout.No pre-processing is done to files in a sketch with any extension other than .ino or .pde. Additionally, .h files in the sketch are not automatically #included from the main sketch file. Further, if you want to call functions defined in a .c file from a .cpp file (like one generated from your sketch), you'll need to wrap its declarations in an
extern "C" {}
block that is defined only inside of C++ files.я понял ))
Ужос! Я же объяснил в #26 как делать если хочешь без cpp.
ТС! Вот это вот читал?
То-есть DetSimen был прав?
ТС! Вот это вот читал?
То-есть DetSimen был прав?
нет.
the file that matches the folder name followed by the others in alphabetical order
файл с именем папки - первый, остальные .ino - за ним в алфавитном порядке.
нет.
файл с именем папки - первый, остальные .ino - за ним в алфавитном порядке.
въехал, даже если он начнётся с a.ino структура окажется не описана так как будет за loop(){}
А кто не даёт описать структуру в заголовочном файле и включать его везде, где нужно?
Вот и я о том же ж.
Идеи пошли по кругу. Так сказать, заLOOPилась тема))
Это даже не идеи - это жИзнь.
задача была получить доступ к структуре из соседнего ино файла.
друге варианты мне известны, еще раз спасибо.
Ну вы подумайте здравомысляще. Первым идёт главный ино. Если в нём будет описана структура, то доступ из ЛЮБОГО соседнего ино будет получен. Иначе, если структура будет описана в другом ино, то доступ к ней будет получен из текущего (естественно) и нижестоящих (по алфавиту) ино. Ага?
Обсуждаете - обсуждаете... А вот нахера это надо - непонятно.
Может у ТС осеннее обострение? Он же не объяснил внятно, почему нормальные методы его не устраивают.
А мне вот интересно, почему объявление функций в «доп. ино» все же «прокатывает»? Сегодня ради интереса сделал так и прокатило. )
А мне вот интересно, почему объявление функций в «доп. ино» все же «прокатывает»? Сегодня ради интереса сделал так и прокатило. )
А почему не должно было прокатить? Вы же пишете функции в самом низу скетча и они нормально вызываются из Луп и Сетап. А вот с объявлением типов - ой. Вообще - программу из набора нескольких ino-файлов можно грубо рассматривать как ОДИН файл, разрезанный по какой-то причине. Все, что работает в одном "куске", будет работать и в нарезке, составленной в правильной последовательности. Компилятор смотрит их подряд.
А ТСу бы перестать маяться фигней и юзать проверенное электроникой #include <myData.h>
Я никогда функции не писал раньше в самом низу. Точнее писал, но перед loop() объявлял их. Оказывается не обязательно объявлять.
Я никогда функции не писал раньше в самом низу. Точнее писал, но перед loop() объявлял их. Оказывается не обязательно объявлять.
Не обязательно в основном, но иногда приходится. Видимо, если функций очень много, у препроцессора не хватает ресурсов для обслуживания писанины ленивого программиста.
А мне вот интересно, почему объявление функций в «доп. ино» все же «прокатывает»? Сегодня ради интереса сделал так и прокатило. )
Так в том то вся и фишка Ардуино - не нужно указывать прототипы, их создаёт сама IDE перед компиляцией.
А вот переменные/структуры и пр. нужно объявлять ДО их использования.
Обсуждаете - обсуждаете... А вот нахера это надо - непонятно.
Нафига надо? Да очень просто. Пишешь несколько отдельных модулей и ни о чём не думаешь. Никаких тебе инклюдов, никаких прототипов... Всей совместной сборкой занимается IDE. Ну ведь удобно же! Для начинающих. Гайвер так и пишет. И правильно. Ну, если есть такая удобная фича, почему ей не пользоваться? Ну да, несовместимость с другими IDE, но нам то это зачем? Мы ведь не профи, так, на раз пописать.)