Двойное использование библиотеки
- Войдите на сайт для отправки комментариев
Вс, 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 ?
В библиотеку передавай ссылку или указатель на экземпляр часов и работай и не плоди сущностей.
но при этом я так понимаю все равно нужно подключать библиотеку повторно для библиотеки, так как ссылка даст только ячейку памяти, но не принцип работы с ней, так?
но при этом я так понимаю все равно нужно подключать библиотеку повторно для библиотеки, так как ссылка даст только ячейку памяти, но не принцип работы с ней, так?
да. и что в этом страшного? - компилятор вставит библиотеку только один раз