AMS библиотеки
Модератор: Alex
-
- Сообщения: 791
- Зарегистрирован: Пт янв 22, 2016 10:08 am
- Благодарил (а): 6 раз
- Поблагодарили: 63 раза
Re: AMS библиотеки
#define MY_PIN 10 директива препроцессора,она говорит что если встретишь MY_PIN то считай что это 10,ну а как можно переопределить значение макроса MY_PIN в скетче легко понять из сказанного
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: AMS библиотеки
Вы хотите сказать, что это невозможно? Я не уверен, но кажется в каких-то библиотеках я встречал что-то подобное.#define MY_PIN 10 директива препроцессора,она говорит что если встретишь MY_PIN то считай что это 10,ну а как можно переопределить значение макроса MY_PIN в скетче легко понять из сказанного
Если это невозможно, то существуют какие-либо варианты решения этой проблемы, кроме передачи параметра в функцию?
-
- Сообщения: 1115
- Зарегистрирован: Вс июн 14, 2015 11:08 am
- Благодарил (а): 85 раз
- Поблагодарили: 342 раза
Re: AMS библиотеки
Если я Вас правильно понял, то можно сделать следующее:
В библиотеке определять макрос только если он не был определен ранее (#ifndef)
В скетче определять макрос перед #include библиотеки.
В библиотеке определять макрос только если он не был определен ранее (#ifndef)
В скетче определять макрос перед #include библиотеки.
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: AMS библиотеки
Да, спасибо, похоже это должно сработать. Как проверю — доложу о результатах.
Попутно вопрос. Взял первую попавшуюся библиотеку MySensors. В скетче определяется макрос
Попутно вопрос. Взял первую попавшуюся библиотеку MySensors. В скетче определяется макрос
но используется он в библиотеке! А в скетче макрос определён перед #include. Это как раз тот приём, который вы описали?#define MY_RADIO_NRF24
-
- Сообщения: 791
- Зарегистрирован: Пт янв 22, 2016 10:08 am
- Благодарил (а): 6 раз
- Поблагодарили: 63 раза
Re: AMS библиотеки
Область видимости имени, определенного директивой #define, простирается от определения до конца файла
не надо путать макроподстановку и глобальные переменные,создайте .h файл, там определите ваш макрос,включите .h в скетч библиотеки
не надо путать макроподстановку и глобальные переменные,создайте .h файл, там определите ваш макрос,включите .h в скетч библиотеки
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: AMS библиотеки
alexsis_76 , сравните ваши ответы и ответы olehs.Область видимости имени, определенного директивой #define, простирается от определения до конца файла
не надо путать макроподстановку и глобальные переменные,создайте .h файл, там определите ваш макрос,включите .h в скетч библиотеки
olehs отвечает на поставленные вопросы и реально помогает. Вы отвечаете на какие-то абстрактные вопросы, которые «летают» только в вашей голове.
Прочитайте мой предыдущий пост и свой ответ на него и ответьте себе на вопрос как они связаны между собой. На мой взгляд никак.
И с чего вы взяли, что я не вижу разницы между макроподстановкой и глобальными переменными (по вашей логике её не видят и авторы библиотеки MySensors)?
-
- Сообщения: 1115
- Зарегистрирован: Вс июн 14, 2015 11:08 am
- Благодарил (а): 85 раз
- Поблагодарили: 342 раза
Re: AMS библиотеки
alexsis_76 имел в виду, что мой совет нерабочий.
Alex, почему не параметры ф-ции или глобальные переменные? (да, я знаю, что глобальные переменные - зло )
Alex, почему не параметры ф-ции или глобальные переменные? (да, я знаю, что глобальные переменные - зло )
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: AMS библиотеки
Разве он нерабочий? (я пока сам не проверял)alexsis_76 имел в виду, что мой совет нерабочий
В принципе можно и их. Я хочу понять мотивацию авторов MySensors, см. мой предыдущий вопрос и авторов многих других библиотек — если они так делают, значит на это должна быть какая-то причина.Alex, почему не параметры ф-ции или глобальные переменные? (да, я знаю, что глобальные переменные - зло )
-
- Сообщения: 791
- Зарегистрирован: Пт янв 22, 2016 10:08 am
- Благодарил (а): 6 раз
- Поблагодарили: 63 раза
Re: AMS библиотеки
alexsis_76 имел ввиду совсем не этоalexsis_76 имел в виду, что мой совет нерабочий.
обычно макроподстановки помещают в файлы.h,там где мы хотим иметь их в исходном файле мы включаем файл .h
ну почему обязательно глобальные,можно и локальные,допустим у вас есть локальный массив,вы передаете в вызываемую функцию указатель на него и работаете,если хотите изменить переменную,передаете ее адресAlex, почему не параметры ф-ции или глобальные переменные