Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Насколько я понял, макросы компилируются в отдельную динамическую библиотеку, которая подцепляется компилятором во время обработки "остального" кода. Такая библиотека, по сути, и является внешним инструментом. Например, предполагаю что макрос не может ссылаться на какой-либо элемент сборки использующий этот макрос, так как во время "запуска библиотеки с макросом" ещё нет той самой сборки, использующей его.
Хм, при таком подходе действительно можно творить всё что угодно. Кстати, в C++ мире тоже некоторое время назад началась работа по разным интеграциям с компилятором. Однако там это явно отдельный инструмент получается, т.к. в самом языке ничего подобного нет.
EP>Думаю что можно подобрать некий синтетический пример показывающий ограничения такого подхода по сравнению с "не внешним" инструментом. Например, что-то типа: EP>... EP>Сходу чего-то более реального не придумал.
Ого, как ты ты накрутил. )
EP>P.S. В Nemerle, также, есть и другая интересная возможность: при использовании внутри кода программы некоторой compile-time-строки-DSL, IDE может подсвечивать ошибки внутри этой DSL строки, например ошибку в XML.
Да, это могло бы быть киллер-фичей, но что-то пока не видно никаких реальных удобных на практике реализаций.