Ошибки, баги, вопросы - страница 2866
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Все можно, макрос только нужно один добавить
Результат: 20
Все можно, макрос только нужно один добавить
Результат: 20
Это очень хорошо. Загадки плохо получается отгадывать.
Сорри, пока пытался объяснить сам запутался)))
Еще раз:
На момент второго определения VALUE, макрос VALUE не определен, поэтому VALUE определяется, как
, ведь TMP у нас как был, так и остался определен VALUE.
А вот TMP, после второго определения VALUE, раскрывается уже в
Как-то так))
В препроцессоре подставляется именно то, что есть и не важно, как это и где определено. Поэтому и аккуратно надо с ним. Пример:
,а теперь добавим в функцию злое, а именно - побочный эффект
И это всего лишь надпись, а если от этой функции депозит зависит?
смешно) когда дошло)
правильно понял, после отмены подстановки первая строчка уже не 10 а вторая TMP это VALUE, но не 10. Т.е. подстановка это далеко не присваивание.
смешно) когда дошло)
правильно понял, после отмены подстановки первая строчка уже не 10 а вторая TMP это VALUE, но не 10. Т.е. подстановка это далеко не присваивание.
Да. Подстановка - это именно подстановка, один в один. Просто когда у тебя, при подстановке в код (не путать с директивой препроцессора) макрос VALUE определен, то препроцессор раскрывает дальше TMP->VALUE->10, а если нет, то TMP->VALUE. При этом, в самом коде диррективы препроцессора не участвуют, при компиляции их уже там нет. Пример:
Да. Подстановка - это именно подстановка, один в один. Просто когда у тебя, при подстановке в код (не путать с директивой препроцессора) макрос VALUE определен, то препроцессор раскрывает дальше TMP->VALUE->10, а если нет, то TMP->VALUE. При этом, в самом коде диррективы препроцессора не участвуют, при компиляции их уже там нет. Пример:
Да, если закомментить вторую подстановку VALUE 20, уйдет декларация переменной VALUE и компилятор не увидит ее и заругается)
Все можно, макрос только нужно один добавить
Результат: 20
Сдаюсь)))
Как определен
?
Сдаюсь)))
Как определен
?
Так быстро? Еще не все специалисты подключились... неделю подождем
Подсказка: так тоже работает (но решение немного другое)
Результат: 20:15
ведь TMP у нас как был, так и остался определен VALUE.
Вот тут опровержение слов "сверху вниз".
Иначе TMP не был бы "как определен, так и остался", а был бы ранее заменен на 10 (на которое заменен VALUE).
Значит, препроцессор не обрабатывает код построчно. Осталось разобраться — как.
@A100, если не затруднит, в двух словах.
Не интересно настолько, чтобы гуглить и читать, но достаточно для того, чтобы спросить.
Что не так в моей логике?
Представлял, что строки анализируются последовательно. Значит, нет неопределенного справа значения:
Подсказка: так тоже работает (но решение немного другое)
Так идентичный по действиям MACRO и MACRO2.
Что не так в моей логике?