プリプロセッサの扱いに困ってます。

ソースファイルをプリプロセッサに食わせて、出てきた処理済みファイルに対して
コンパイルを行うとします。

ここで、プリプロセス後のファイルは、それまでの情報を
失っている場合がありますよね。
特に、コンパイル中にエラーが起きた場合には、
行番号がずれてしまっていることがあるため、ユーザーには意味不明な
エラー行を吐いてしまうと思うんですよね。

みなさんは、ここらへんをどうやって解決しているんでしょうか?