Здравствуйте, _NN_, Вы писали:
_NN>предлагаете ещё больше усугубить время компиляции?
Даже если поручить реализацию расширенного макропроцессора (именно макро-, а не пре-) самым криворуким программистам, вряд ли они смогут заметно усугубить время компиляции сверх уже усугубленного. Впрочем, прогресс не стоит на месте...
Здравствуйте, Евгений Музыченко, Вы писали:
V>>Подозреваю что эти господа брезгуют мощью макросов ЕМ>Убогие макросы C/C++ плохо сочетаются со словом "мощь".
Ещё как сочетаются, просто ты не использовал нормальных макросов с рекурсией и блекджеком.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, _NN_, Вы писали:
_NN>Так есть же _Pragma (C++11).
А всего остального нет. Если уж препроцессор, то хоть бы чуть менее примитивный. Те же директивы условной трансляции внутри макроса обрабатывать, чтоб не городить трехэтажные конструкции, в одном месте определяя пачку макросов с разным содержимым, а в другом — выбирая, какой из них будет вставляться.
Здравствуйте, Евгений Музыченко, Вы писали: ЕМ>Давно пора бы что-то сделать с убогим макросинтаксисом, чтобы прагмы и директивы условной трансляции можно было вставлять в макросы. MS почти двадцать лет назад выродила __pragma и __if_exists, но и они кривоватые, и комитет не чешется.
Здравствуйте, Евгений Музыченко, Вы писали:
V>>Препроцессор не генерирует код, он генерирует текст. ЕМ>Выражение "программный код" давным-давно стало синонимом к "тексту программы".
Для макропроцессора никогда им и не было.
ЕМ>Даже здесь кнопка "Код" подразумевает вставку отнюдь не объектного и/или двоичного кода, а как раз текста.
Так вставляй, кто мешает? Макропроцессор никогда и не брал на себя обязанности компилятора, иначе бы он перестал быть макропроцессором.
V>>Как раз это и сделано на недоделанном макропроцессоре. ЕМ>Что мешало сперва доделать макропроцессор?
Комитету этот вопрос в следующий раз задай.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, _NN_, Вы писали:
_NN>Пора бы обновить подсветку ключевых слов
Давно пора бы что-то сделать с убогим макросинтаксисом, чтобы прагмы и директивы условной трансляции можно было вставлять в макросы. MS почти двадцать лет назад выродила __pragma и __if_exists, но и они кривоватые, и комитет не чешется.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Здравствуйте, _NN_, Вы писали:
_NN>>Пора бы обновить подсветку ключевых слов
ЕМ>Давно пора бы что-то сделать с убогим макросинтаксисом, чтобы прагмы и директивы условной трансляции можно было вставлять в макросы. MS почти двадцать лет назад выродила __pragma и __if_exists, но и они кривоватые, и комитет не чешется.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>А всего остального нет. Если уж препроцессор, то хоть бы чуть менее примитивный. Те же директивы условной трансляции внутри макроса обрабатывать, чтоб не городить трехэтажные конструкции, в одном месте определяя пачку макросов с разным содержимым, а в другом — выбирая, какой из них будет вставляться.
Подозреваю что эти господа брезгуют мощью макросов желая всё перевести в немакросы. Это ещё боком выйдет.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>А всего остального нет. Если уж препроцессор, то хоть бы чуть менее примитивный. Те же директивы условной трансляции внутри макроса обрабатывать, чтоб не городить трехэтажные конструкции, в одном месте определяя пачку макросов с разным содержимым, а в другом — выбирая, какой из них будет вставляться.
Это да, с другой стороны предлагаете ещё больше усугубить время компиляции?
Здравствуйте, Евгений Музыченко, Вы писали:
V>>просто ты не использовал нормальных макросов с рекурсией и блекджеком. ЕМ>И как же рекурсия и блэкджек помогут мне сделать условную обработку параметров макроса?
А в чём проблема её условно обрабатывать?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, Vain, Вы писали:
ЕМ>>И как же рекурсия и блэкджек помогут мне сделать условную обработку параметров макроса? V>А в чём проблема её условно обрабатывать?
Ну расскажите, как мне раскрывать макрос в различный набор конструкций, в зависимости от заданных параметров, кроме как вставлять сами параметры непосредственно.
Здравствуйте, Евгений Музыченко, Вы писали:
V>>Подозреваю что эти господа брезгуют мощью макросов ЕМ>Убогие макросы C/C++ плохо сочетаются со словом "мощь".
Никто не мешал их сделать не убогими лет так 20.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Ну расскажите, как мне раскрывать макрос в различный набор конструкций, в зависимости от заданных параметров, кроме как вставлять сами параметры непосредственно.
Макросы для вставки текста, про какие параметры речь?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, Евгений Музыченко, Вы писали:
V>>Никто не мешал их сделать не убогими лет так 20. ЕМ>40-45 лет назад тоже никто не мешал. Все необходимое было давно известно и столь же давно реализовано.
Кому необходимое? Вот boost.preprocessor доказывает, что так реализовано, что пришлось мудрить.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, Евгений Музыченко, Вы писали:
V>>Макросы для вставки текста, про какие параметры речь? ЕМ>Про те, что в скобочках.
И? Ты мысль то заверши.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, Vain, Вы писали:
V>Кому необходимое?
Необходимое для реализации адекватного макропроцессора, способного вставить не только примитивную статическую конструкцию с подстановкой фактических параметров, но и заполнить таблицу набором значений, сгенерировать код, состав которого произвольно зависит от параметров, создать набор непротиворечиво связанных объектов и т.п.
V>Вот boost.preprocessor доказывает, что так реализовано, что пришлось мудрить.
Подобное убожество могли породить только те, кто никогда не видел нормального макропроцессора.
Здравствуйте, LaptevVV, Вы писали:
LVV>Ну, используй ML/1 Брауна.
Речь не о том, что прикрутить сбоку, а о том, что универсальный и мощный язык мог бы иметь макропроцессор и поприличнее. А еще лучше — встроенные языковые средства наподобие шаблонов, но не такие убогие.
Здравствуйте, Евгений Музыченко, Вы писали:
V>>Кому необходимое? ЕМ>Необходимое для реализации адекватного макропроцессора, способного вставить не только примитивную статическую конструкцию с подстановкой фактических параметров, но и заполнить таблицу набором значений, сгенерировать код, состав которого произвольно зависит от параметров, создать набор непротиворечиво связанных объектов и т.п.
Препроцессор не генерирует код, он генерирует текст. Или ты перепутал препроцессор с инструкцией прагма? Так она в каждом компиляторе своя.
V>>Вот boost.preprocessor доказывает, что так реализовано, что пришлось мудрить. ЕМ>Подобное убожество могли породить только те, кто никогда не видел нормального макропроцессора.
Как раз это и сделано на недоделанном макропроцессоре.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, Vain, Вы писали:
V>Препроцессор не генерирует код, он генерирует текст.
Выражение "программный код" давным-давно стало синонимом к "тексту программы". Даже здесь кнопка "Код" подразумевает вставку отнюдь не объектного и/или двоичного кода, а как раз текста.
V>Как раз это и сделано на недоделанном макропроцессоре.