C プラグマ 新しいページはコチラ
提供: yonewiki
(→#pragma once) |
|||
224行: | 224行: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | 但し、この方法は標準化されたものではないため、Microsoft Visual Studio C++ 4.0以上でしか動作しないと考えて扱っても良いのかもしれません。他のコンパイラでも動作するものもありますが、自分の環境に合わせてしまっても良いと思います。他の人に配るなら、 | ||
+ | |||
+ | <syntaxhighlight lang="cpp"> | ||
+ | FILE sample.h | ||
+ | #ifndef __SAMPLE.H__ | ||
+ | #define __SAMPLE.H__ | ||
+ | |||
+ | #if _MSC_VER > 1000 | ||
+ | #pragma once | ||
+ | #endif | ||
+ | ヘッダファイルプロトタイプ宣言 | ||
+ | |||
+ | #endif | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | のように記述すると良いと思います。インクルードガードによる手法をサポートしつつも、#pragma onceの機能も有効利用できます。コンパイル速度が#pragma onceの方が早いので、おすすめです。他のコンパイラでも速度が速くなるようにインクルードガードを実現するには、冗長インクルードガードと呼ばれる手法を使います | ||
+ | |||
+ | <syntaxhighlight lang="cpp"> | ||
+ | #ifndef __SAMPLE.H__ | ||
+ | #include "sample.h" | ||
+ | #endif | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | のようにしてインクルードガード下上でさらにインクルード分のところでも読み込むかどうかを判断する処理を加えます。インクルード部がかなり煩雑になりますが、2重に読み込むことをより早い段階で避けることが出来るので、コンパイル速度の向上が見込めます。 | ||
[[C PlusPlus#Cにもあった技術|C++]]へ戻る | [[C PlusPlus#Cにもあった技術|C++]]へ戻る |