Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Осталось вспомнить, что есть такая штука, как макросы, и соотнесение блоков в том виде, в каком их выдаст препроцессор, будет задачей куда менее тривиальной, чем сделать интерпретатор выражений, допустимых для #if.
Вы результат работы gcc -E вживую видели? Или, хотя бы, задумывались, как cc1, работающий после препроцессор, умудряется записать правильные номера строк в debug info, не выполняя "нетривиальное соотнесение блоков"?
По факту, задача элементарная, потому что препроцессор нашпигует свою выдачу #line-ами.