Moving beyond the whole perl/regex thing, what about just running the c pre processor on it?
The only downside there I see is possible text matching #defines that you don't want to get replaced, but I would think matching what cpp considers a #define would be vastly simpler then matching comments..