涼の成長記録

自らの人生に主導権を持つべく、独立を目指して2014年3月31日を持ってITエンジニアを退職。そんな23歳♂の成長記録。

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が自動編集するファイルを手書きで弄るのは、どうも気が引けます。そして面倒臭いです。


解せぬ。。