C++Builderで#pragma once
C++Builder 2010から、インクルードガード(ワンタイムインクルード)が、プリプロセッサ指令、つまり#pragmaによりできるようになりました。
今まで、以下のようにマクロを使っていたのを、
#ifndef TSampleH #define TSampleH ・・・ #endif
以下の1文で済むようになったということです。
#pragma once
http://en.wikipedia.org/wiki/Pragma_once
これは素晴らしいです。テキストエディタの設定次第では、#ifndefがかかっている部分が全てシンタックス・ハイライトされたりしましたが、もう心配はありません。そう、"#pragma once"ならね。元々MicrosoftのVC++等ではできていたのですが、C++Builderでも2010以降ではできるようになったのです。
しかし、この喜びは簡単に踏み潰されてしまいます。C++Builderの場合、,cppファイルと.hファイルの自動結び付け(ユニット化)を、インクルードガードのマクロ名称を使って行っているようなのです。つまり、従来のインクルードガードを用いなければ、逆に不便になるということです。
プロジェクトファイル(.cbproj)を直接編集して、ユニット化させることもできますが、IDEが自動編集するファイルを手書きで弄るのは、どうも気が引けます。そして面倒臭いです。
解せぬ。。