Comments 11
Именно поэтому я выбираю Pascal.
Ну, сказав "А", неплохо бы сказать и "Бе". Приведите реализацию поставленной задачи на Pascal. Так, чтоб все компиляторы ее съедали. Попкорн я уже заготовил.
А нет никакого решения этой выдуманной задачи, так как нет макросов. Такой код просто невозможно написать, а значит и читать его после мега-макрос-хакера не нужно.
Автор же статьи не удосужился показать пример зачем ему это понадобилось. Зато показал как превратить программу в макросный, компилер специфичный, фарш.
Задача поставлена. Её практическая ценность не объяснена. Применение на практике не показано. Похоже, это - задача ради статьи.
Да практическая ценность-то понятна. Непонятно, как существует такой язык.
Реализуйте эту же задачу на вашем любимом языке. Желательно чтоб у того не было единственного, богами созданного, компилятора и был принятый стандарт языка.
А за одно объясните нам практическую ценность. А то правда не очень понятно зачем это надо и как это использовать.
Например,
(eval-when-compile
`(handler-case ,expr
(error (e) 'no-value))))
Конкретно в C/C++ половина конструкций требует вычислимости на этапе компиляции. Неплохо бы это проверять, чтобы получать при обращении к своим модулям понятную диагностику вместо наведённых ошибок.
А тут разве представлен универсальный СИ код? Тут какая-то простыня хаков для конкретных компиляторов, это не СИ код :)
Хаба "Ненормальное программирование" не хватает.
Вместо __LINE__
можно посмотреть на __COUNTER__
Как проверить в C, является ли выражение константой