AMS библиотеки

Модератор: Alex

alexsis_76
Сообщения: 791
Зарегистрирован: Пт янв 22, 2016 10:08 am
Благодарил (а): 6 раз
Поблагодарили: 63 раза

Re: AMS библиотеки

Сообщение alexsis_76 » Сб сен 24, 2016 3:09 pm

#define MY_PIN 10 директива препроцессора,она говорит что если встретишь MY_PIN то считай что это 10,ну а как можно переопределить значение макроса MY_PIN в скетче легко понять из сказанного :)
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: AMS библиотеки

Сообщение Alex » Сб сен 24, 2016 6:31 pm

#define MY_PIN 10 директива препроцессора,она говорит что если встретишь MY_PIN то считай что это 10,ну а как можно переопределить значение макроса MY_PIN в скетче легко понять из сказанного
Вы хотите сказать, что это невозможно? Я не уверен, но кажется в каких-то библиотеках я встречал что-то подобное.

Если это невозможно, то существуют какие-либо варианты решения этой проблемы, кроме передачи параметра в функцию?
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: AMS библиотеки

Сообщение olehs » Сб сен 24, 2016 6:36 pm

Если я Вас правильно понял, то можно сделать следующее:
В библиотеке определять макрос только если он не был определен ранее (#ifndef)
В скетче определять макрос перед #include библиотеки.
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: AMS библиотеки

Сообщение Alex » Сб сен 24, 2016 7:12 pm

Да, спасибо, похоже это должно сработать. Как проверю — доложу о результатах.

Попутно вопрос. Взял первую попавшуюся библиотеку MySensors. В скетче определяется макрос
#define MY_RADIO_NRF24
но используется он в библиотеке! А в скетче макрос определён перед #include. Это как раз тот приём, который вы описали?
alexsis_76
Сообщения: 791
Зарегистрирован: Пт янв 22, 2016 10:08 am
Благодарил (а): 6 раз
Поблагодарили: 63 раза

Re: AMS библиотеки

Сообщение alexsis_76 » Вс сен 25, 2016 2:33 am

Область видимости имени, определенного директивой #define, простирается от определения до конца файла
не надо путать макроподстановку и глобальные переменные,создайте .h файл, там определите ваш макрос,включите .h в скетч библиотеки
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: AMS библиотеки

Сообщение Alex » Вс сен 25, 2016 7:26 am

Область видимости имени, определенного директивой #define, простирается от определения до конца файла
не надо путать макроподстановку и глобальные переменные,создайте .h файл, там определите ваш макрос,включите .h в скетч библиотеки
alexsis_76 , сравните ваши ответы и ответы olehs.

olehs отвечает на поставленные вопросы и реально помогает. Вы отвечаете на какие-то абстрактные вопросы, которые «летают» только в вашей голове.

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

И с чего вы взяли, что я не вижу разницы между макроподстановкой и глобальными переменными (по вашей логике её не видят и авторы библиотеки MySensors)?
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: AMS библиотеки

Сообщение olehs » Вс сен 25, 2016 9:50 am

alexsis_76 имел в виду, что мой совет нерабочий.
Alex, почему не параметры ф-ции или глобальные переменные? (да, я знаю, что глобальные переменные - зло :) )
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: AMS библиотеки

Сообщение Alex » Вс сен 25, 2016 10:45 am

alexsis_76 имел в виду, что мой совет нерабочий
Разве он нерабочий? (я пока сам не проверял)
Alex, почему не параметры ф-ции или глобальные переменные? (да, я знаю, что глобальные переменные - зло :) )
В принципе можно и их. Я хочу понять мотивацию авторов MySensors, см. мой предыдущий вопрос и авторов многих других библиотек — если они так делают, значит на это должна быть какая-то причина.
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: AMS библиотеки

Сообщение olehs » Вс сен 25, 2016 10:58 am

Проверьте, пожалуйста, рабочий или нет.
alexsis_76
Сообщения: 791
Зарегистрирован: Пт янв 22, 2016 10:08 am
Благодарил (а): 6 раз
Поблагодарили: 63 раза

Re: AMS библиотеки

Сообщение alexsis_76 » Вс сен 25, 2016 11:05 am

alexsis_76 имел в виду, что мой совет нерабочий.
alexsis_76 имел ввиду совсем не это
обычно макроподстановки помещают в файлы.h,там где мы хотим иметь их в исходном файле мы включаем файл .h
Alex, почему не параметры ф-ции или глобальные переменные
ну почему обязательно глобальные,можно и локальные,допустим у вас есть локальный массив,вы передаете в вызываемую функцию указатель на него и работаете,если хотите изменить переменную,передаете ее адрес
Ответить