Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Во-вторых, не вижу там характерных слов, вроде "impossible", "unsupported", "not implemented" и подобных. Возможно, недостаточно знаю английский.
Может недостаточное знание английского так же сказывается, но больший вклад нежелание принимать реальность как она есть. Когда 30 лет не высовываешь нос за пределы уютного мирка VC++, то сложно поверить в то, что читать содержимое float-а через указатель на int запрещено.
S>>Вы хотели определение -- вы его получили.
ЕМ>Во-первых, я хотел определения макропроцессора вообще, а получил определение такового общего назначения.
Сложно объяснить как "вообще" противопоставляется "общему назначению" кроме как скудоумием.
ЕМ>Ну вот Вам от Алисы, по запросу "определение встроенного макропроцессора":
ЕМ>ЕМ>Встроенный макропроцессор — это программа, которая встроена в другую программу (например, компилятор, ассемблер) и выполняет систематическую замену текста на основе макросов. Макрос — это средство замены строки на другую, полученную из исходной по заранее заданным правилам.
Сравните с определением из Wikipedia, ссылку я вам давал:
A macro processor is a program that copies a stream of text from one place to another, making a systematic set of replacements as it does so. Macro processors are often embedded in other programs, such as assemblers and compilers.
Не вижу противоречий.
Ключевой момент в том, что макросы работают с текстом и не заботятся о семантике, которая с текстом связана. Именно поэтому в первой части определения из Wikipedia сказано вот это:
a macro processor that is not tied to or integrated with a particular language
т.е. макропроцессор делает свою работу безотносительно того, что делает язык программирования.
Когда же мы работаем с фрагментом кода с анализом его семантики, т.е. когда на вход идут не фрагменты текста, а код как данные над которыми можно делать какие-то преобразования, то это уже не макро-программирование, а мета-программирование.