C++スタイルの1行コメントをCスタイルのコメントに変換する

これは備忘録。

新人研修でC言語で課題プログラムを書かせているので、ソースが提出されたら、

  1. ソースをエディタで開く。
  2. MinGWで警告レベル最大でビルドする。警告が出たら該当箇所のソースを見る*1
  3. 動かしてみる。
  4. 同時にソースを眺める。
  5. 気が向いたら時々Splintでチェックする。

という工程を経るのだけど、MinGWに警告オプションを付けまくっている私の環境では、

//コメント
if (foo) {  //コメント
	bar = BAZ;
}

こんなC++スタイルの1行コメントでもコンパイルエラーになるので*2

/*コメント*/
if (foo) {  /*コメント*/
	bar = BAZ;
}

こんなC言語スタイルのコメントに変換したい訳だ、vim。ソースを眺める時点で1行コメントに気づくので、そこで正規表現で置換してしまう。

面倒なので文字列中に//が出現した場合とか複数行連続するコメントとかは考慮しない。新人研修のソースなので分量は高が知れているので、手動でチェックしてしまう。

:%s/\/\/\(.*\)$/\/\*\1\*\//gc

今時のコンパイラC++スタイルのコメントでもOKなものも多いし、課題自体もVisual C++で書かせているのにも関わらず、MinGWに「-Wall -ansi -pedantic -pedantic-errors」を付けてコンパイルしようとする自分が悪いのだけど、でも慣れたツールを使いたいので仕方がない。

*1:というかせめてビルドして最低限の動作チェックをしてから提出してほしい、いや本当に。

*2:ソースファイルの末尾に改行が無くてもコンパイルされない。