ぐちゃぐちゃCソースが先輩に教えてもらったifdefcutというフリーソフトでめちゃスッキリという話

僕は仕事でC言語のプログラムソースを読み書きすることがあるのですが
そのソースは色々な人が変更し、色々なプロジェクトを経てきたので
#ifや#ifdef等のコンパイルスイッチ*1を使った条件コンパイル文で溢れていて
グチャグチャでメチャクチャ読みづらいのですが
このソフトを使うとコンパイルされる部分だけ出力されて、劇的にスッキリ!
そんなソフトの紹介です。


ソフトの名前はifdefcut(ホームページ)。
実はこのソフトの存在を知る前はテキストエディタ搭載のマクロで有効部分のみ切り出す、というものを
作ったことがあります。
しかし動作は遅く、何よりそのマクロの信頼性に欠けるのでイマイチだったんですが
このソフトの場合、実際のコンパイラを使用するので早いし信頼性もバッチリ。


普段VC++(VisualC++6.0)を使っているので、このソフト用にバッチを組んでVCと連携させるようにしました。
ソフトの紹介ついでにそのBATも載せておきますのでよければご参考に。

以降、EXEとBATをD:\ifdefcut\ に置くことを前提で書きます。


◆ifdefcut_for_vc.bat

@echo off
::  CLを実行するための環境設定
call "C:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT"
::  CL.EXEのパス設定
set IFDEFCUT_CPP="C:\Program Files\Microsoft Visual Studio\VC98\Bin\cl.exe"

::  includeディレクトリの設定(ここは適宜変更)
set INCLUDE_DIR1=.\
set INCLUDE_DIR2=.\hoge\

:: Cファイルの設定
:: (BAT実行時の第1引数が入力、第2引数が出力ファイル名)
set IN_FILE=%1
set OUTFILE=%2

D:\ifdefcut\ifdefcut -I%INCLUDE_DIR1% -I%INCLUDE_DIR2% %IN_FILE% > %OUTFILE%

:: 出力されたファイルを開く
start %OUTFILE%


次にVC側の設定。
VC6メニューバーの[ツール]→[カスタマイズ]→[ツール]タブを選択。



そこでメニュー項目の一番下の空欄を選択し「ifdefcut」と入力
↓コマンドに
D:\ifdefcut\ifdefcut_for_vc.bat
↓引数に
$(FilePath) $(FileName)_.c
↓実行時のディレクトリに
$(FileDir)


を設定したら準備はOK。
VC上でソースを開き、メニューバーの[ツール]→[ifdefcut]を選べば
ifdefcutでフィルタされたソースが出力されると思います。
(更に、[ツール]→[カスタマイズ]→[キーボード]タブ→カテゴリ:[ツール]の
 UserTool?を選択しショートカットキーを設定しておけばワンタッチで実行できます)


VCでの設定例を書きましたがソフト自体はcygwin-gcc, minGW-gccなどにも対応しているそうですので
windows上でCソースをすっきりさせたいな〜という方は是非一度使ってみては。


【関連記事】
ノートPCのタッチパッドを劇的に快適に - Koonies/こりゃいいな!