Двойное использование библиотеки

orcsin
Offline
Зарегистрирован: 12.06.2015

Здравствуйте!

В скетче я использую часы:

#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 с общим доступом из разных файлов?

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Мда. Ну тут могу ТС сказать это стул на нем сидят это стол за ним едят

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

orcsin пишет:

Я пишу библиотеку, в которой тоже используются часы, причем не только чтение (его можно организовать через постоянную передачу данных в библиотеку), но я хочу что бы и из библиотеки можно было настраивать часы.

В библиотеку передавай ссылку или указатель на экземпляр часов и работай и не плоди сущностей. 

rkit
Offline
Зарегистрирован: 23.11.2016

Типа extern есть extern, который полностью задачу решает. В одном cpp файле объявляем Datetime now;, в импортируемом везде заголовке объявляем extern Datetime now;

orcsin
Offline
Зарегистрирован: 12.06.2015

rki, можно пожалуйста по подробнее?

Есть три файла:

1. ino

2. h

3. cpp

В каком файле лучше объявить Datetime now, а в каком extern Datetime now ?

orcsin
Offline
Зарегистрирован: 12.06.2015

DetSimen пишет:

В библиотеку передавай ссылку или указатель на экземпляр часов и работай и не плоди сущностей. 

но при этом я так понимаю все равно нужно подключать библиотеку повторно для библиотеки, так как ссылка даст только ячейку памяти, но не принцип работы с ней, так?

b707
Offline
Зарегистрирован: 26.05.2017

orcsin пишет:

но при этом я так понимаю все равно нужно подключать библиотеку повторно для библиотеки, так как ссылка даст только ячейку памяти, но не принцип работы с ней, так?

да. и что в этом страшного? - компилятор вставит библиотеку только один раз