C プラグマ 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(#pragma once)
 
1行: 1行:
 +
[[C PlusPlus#Cにもあった技術|C++]]へ戻る
 +
 +
 
※このページではC言語にも存在していたという意味で記事タイトルがC プラグマになっていますが、<br />
 
※このページではC言語にも存在していたという意味で記事タイトルがC プラグマになっていますが、<br />
 
[[C PlusPlus|C++]]でも同様です。[[C PlusPlus|C++]]だけの機能がある場合は明記します。<br />
 
[[C PlusPlus|C++]]でも同様です。[[C PlusPlus|C++]]だけの機能がある場合は明記します。<br />
221行: 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++]]へ戻る

2020年7月12日 (日) 00:00時点における最新版



個人用ツール
名前空間

変種
操作
案内
ツールボックス