Вообще-то, нормальный препроцессор (описание такого есть в GNU C/C++) обязан делать макроподстановки до "девятого колена". Нет такой теории, что-бы коментарии удалять раньше макроподстановки... Кто это придумал? Сумасшедший профессор? Так ни одна книга по лексическому анализу не отражает физическую суть процесса, а используемые приемы настолько неуклюжи, что просто караул!
Т.е. если это кто-то делает -- то пожалуйста. А в MSVC++ лучший препроцессор (немного уступающий, только в одной вещице GNU и то для MSVC ненужной, из-за другого принципа генерации Debug Info)