Двойное использование библиотеки
- Войдите на сайт для отправки комментариев
Вс, 26/01/2020 - 17:52
Здравствуйте!
В скетче я использую часы:
#include <Wire.h> #include "RTClib.h" //******************** Time **********************// RTC_DS3231 rtc; DateTime now; void setup() { Serial.begin(9600); Wire.begin(); // Инициализируем часы rtc.begin(); // --//-- Serial.println(textWelcome); } void loop() { now = rtc.now(); // Считываем текущее время; delay(1000); }
Я пишу библиотеку, в которой тоже используются часы, причем не только чтение (его можно организовать через постоянную передачу данных в библиотеку), но я хочу что бы и из библиотеки можно было настраивать часы.
Самое простое, но мне кажется не красивое, это создать экземпляры часов и в скетче и библиотеке, но может есть что то типа extern с общим доступом из разных файлов?
Мда. Ну тут могу ТС сказать это стул на нем сидят это стол за ним едят
Я пишу библиотеку, в которой тоже используются часы, причем не только чтение (его можно организовать через постоянную передачу данных в библиотеку), но я хочу что бы и из библиотеки можно было настраивать часы.
В библиотеку передавай ссылку или указатель на экземпляр часов и работай и не плоди сущностей.
Типа extern есть extern, который полностью задачу решает. В одном cpp файле объявляем Datetime now;, в импортируемом везде заголовке объявляем extern Datetime now;
rki, можно пожалуйста по подробнее?
Есть три файла:
1. ino
2. h
3. cpp
В каком файле лучше объявить Datetime now, а в каком extern Datetime now ?
В библиотеку передавай ссылку или указатель на экземпляр часов и работай и не плоди сущностей.
но при этом я так понимаю все равно нужно подключать библиотеку повторно для библиотеки, так как ссылка даст только ячейку памяти, но не принцип работы с ней, так?
но при этом я так понимаю все равно нужно подключать библиотеку повторно для библиотеки, так как ссылка даст только ячейку памяти, но не принцип работы с ней, так?
да. и что в этом страшного? - компилятор вставит библиотеку только один раз