晴耕雨読

working in the fields on fine days and reading books on rainy days

/* */ の範囲コメントで排他的に片方のコードのみを有効にする

プログラム内の2つのどちらかを実行したいコーディングを記載しているときに、一方だけを有効にする範囲コメントに書き方について説明します。

C言語やJavaなどでは //*/*///*/ で囲むことで、後者のコードだけが実行され、先頭コメントを /* に変えることで、前者のコードだけが実行されます。 これを使うことでデバッグ時に動きを変えたいときなんかに便利です。

//*
int value = 111;
/*/
int value = 222;
//*/
/*
int value = 111;
/*/
int value = 222;
//*/

SQLなら --/*/*/--*/ で囲むことで、後者のコードだけが実行され、先頭コメントを /* に変えることで、前者のコードだけが実行されます。 (2020/6/26追記) SQLite3では問題なくできるのですが、他の環境で実際に試してみると場合によっては構文エラーで怒られてしまいます。どのSQLの実行環境でも使えるわけではないことに注意してください。

--/*
select * from table where condition
/*/
update table set col='value' where condition
--*/
/*
select * from table where condition
/*/
update table set col='value' where condition
--*/

最近のエディタを使っていれば Ctrl + / でコメントアウトできるので、この排他的な範囲コメントの技を使うことはあまりないですが、知っているとデバッグとかが少し楽になります。

以上です。