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++]]へ戻る | ||