Ошибки, баги, вопросы - страница 2865
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Не возможно создать новый продукт для маркета, пишет ошибка 500.
Продукт создан прошел проверки, в ЛК пишет опубликован, но когда переходишь по ссылке получаешь ответ 500.
Работает сверху-вниз, как замена текста. Т.е. "TMP" будет заменен на "VALUE".
Это не компилятор - это препроцессор)
превращается в
, а VALUE у тебя не определен
А как должен работать undef?
А как должен работать undef?
До этого места идет "замена текста".
Это не компилятор - это препроцессор)
превращается в
, а VALUE у тебя не определен
Я правильно понимаю, тип значения VALUE*2 - const и привязан к самой подстановке, т.е. и VALUE тоже константа. Компилятор создает две константы.
Если так, то наверное создавая новую подстановку
#define VALUE VALUE1
И то не корректно, если VALUE выше по коду была определена константой.
До этого места идет "замена текста".
Не сходится, меняет TMP на VALUE в строке "#define VALUE (TMP*2)", которая после.
Не сходится, меняет TMP на VALUE в строке "#define VALUE (TMP*2)", которая после.
И так идут замены до тех пор, пока все на закончатся.
Есть код:
Первая подстановка меняет VALUE на 10 по всему коду до #undef VALUE, остается вот такое:
Следующая подстановка меняет TMP на 10. Получается
Где я туплю?
Есть код:
Первая подстановка меняет VALUE на 10 по всему коду до #undef VALUE, остается вот такое:
Следующая подстановка меняет TMP на 10. Получается
Где я туплю?
вместо TMP подставляется не 10, а именно VALUE, а вот потом, если VALUE определен (вот с этим засада), уже 10
Смотри пошагово:
Препроцессор честно подставляет внутрь Print
,после чего, опять же все без обмана, подставляет вместо TMP что? Правильно:
, после чего стирает все диррективы препроцессора и только после этого, компилятору передается вот это:
вместо TMP подставляется не 10, а именно VALUE, а вот потом, если VALUE определен (вот с этим засада), уже 10
Смотри пошагово:
Препроцессор честно подставляет внутрь Print
,после чего, опять же все без обмана, подставляет вместо TMP что? Правильно:
, после чего стирает все диррективы препроцессора и только после этого, компилятору передается вот это:
Это не называется "сверху вниз".
Это не называется "сверху вниз".
Сорри, пока пытался объяснить сам запутался)))
Еще раз:
На момент второго определения VALUE, макрос VALUE не определен, поэтому VALUE определяется, как
(VALUE*2)
, ведь TMP у нас как был, так и остался определен VALUE.
А вот TMP, после второго определения VALUE, раскрывается уже в
(TMP*2)
Как-то так))
В препроцессоре подставляется именно то, что есть и не важно, как это и где определено. Поэтому и аккуратно надо с ним. Пример:
,а теперь добавим в функцию злое, а именно - побочный эффект
И это всего лишь надпись, а если от этой функции депозит зависит?