Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Условная компиляция макроса можно? Как?
|
|||
|---|---|---|---|
|
#18+
Препроцессор умеет конкатенировать параметр макроса с текстом, получая при этом в т.ч. и новый макрос. Вопрос: можно ли реализовать макрос для "left side value" с условной разверткой, и в случае если конкатенированный макрос не найден, то вызвать функцию? Примерно так: Код: plaintext 1. 2. 3. Вот вместо последней строчки что-то типа: Код: plaintext 1. Чтобы на выходе препроцессора было ИЛИ Код: plaintext 1. 2. ИЛИ Код: plaintext 1. 2. Надо для написания библиотеки к Ардуино, у которого в такие конструкции разворачиваются типовые макросы AVR-GCC, но в ряде случаев хотелось бы использовать переменный в памяти, а конкатенация практически "исключает" этот процесс... ... или есть иные решения? Модератор: Пользуйся тегами подветки исходного кода ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2015, 08:26 |
|
||
|
Условная компиляция макроса можно? Как?
|
|||
|---|---|---|---|
|
#18+
Мне кажется вам поможет условная компиляция ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2015, 08:31 |
|
||
|
Условная компиляция макроса можно? Как?
|
|||
|---|---|---|---|
|
#18+
SashaMercury, Нет. Чтобы использовать условную компиляцию, мне надо перечислить в #ifdef все варианты значения параметра... это, для целых чисел в частности, просто нереально. Впрочем, если есть условная компиляция тела макроса, то да. Именно такой способ и спрашивал. Подскажете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2015, 12:47 |
|
||
|
Условная компиляция макроса можно? Как?
|
|||
|---|---|---|---|
|
#18+
Arhat109, Самое грустное, что в доке к gcc где-то читал что ТАК можно использовать предикат препроцессора defined() ... но вот avr-gcc матерится. Проверено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2015, 12:50 |
|
||
|
Условная компиляция макроса можно? Как?
|
|||
|---|---|---|---|
|
#18+
Arhat109, может быть тогда написать функцию, которая анализирует код программы на предмет присутствия макросов с определенными именами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2015, 14:56 |
|
||
|
Условная компиляция макроса можно? Как?
|
|||
|---|---|---|---|
|
#18+
SashaMercuryможет быть тогда написать функцию, которая анализирует код программы на предмет присутствия макросов с определенными именами Может быть лучше поискать другие варианты решения задачи автора? Трансляторы и так самодостаточны чтобы добавлять над ними еще новые логики и смыслы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2015, 16:43 |
|
||
|
Условная компиляция макроса можно? Как?
|
|||
|---|---|---|---|
|
#18+
mayton, Нет там "других" решений. Программирование микроконтроллеров AVR, по крайней мере, сильно завязано на даташит камня. А он весь в таких вот абревиатурах TCCR0A -- управляющий регистр (адрес в памяти) "А" счетчика-таймера 0. И компилятору даны эти макросы практически "изначально". А у Ардуино, ещё и ноги пронумерованы "от фонаря": 13 нога платы - это выход "А", таймера 0, а 2-я - выход "В" таймера 3 ... Вот и захотелось "странного": сделать макрос, позволяющий по номеру ноги платы получать такой вот, практически встроенный макрос. Типа "загрузить предел счета по 2-й ноге платы числом 127" => timerOut(2, 127); ... надо преобразовать в использование типового макроса такого: OCR3B = 127; ... вот если задавать ногу числом, то можно считать "сделал". А вот ежели номер ноги платы лежит в переменной ... то фиг. Надо вызывать функцию... как? Дело в том, что номера ног как-бы известны всем (можно посмотреть на плате), а вот таких аббревиатур там "видимо-невидимо" и лазить каждый раз в даташит ... как-то невесело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2015, 20:45 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=46&tid=2018956]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 147ms |

| 0 / 0 |
