Во-первых, пока речь идет о языке C++, нормальным препроцессором будет такой и только такой препроцессор, который соотвествует спецификации препроцессора языка C++ сформулированной в Стандарте языка. Тут никакой дискуссии быть не может.
Во-вторых, речь идет не о препроцессоре, как таковом, а о стадиях трансляции. Препроцессор, который суется во все стадии трансляции до "девятого колена" — это действительно может придумать только сумасшедший профессор.
И, наконец, в-третьих, работоспособнось второго способа, как я уже говорил, зависит не от препроцессора, а от подхода транслятора к распознаванию комментариев. В общем случае компилятор C++ _не_ _распознает_ комментарии, возникшие после макроподстановки.