C++/CLI_#pragma once とは

C++/CLI のカテゴリー作ろうと思ったら登録できなかったのに今できるし。
編集するのめんどくさいんだよ…。

ソースファイルをコンパイルする際、
ファイルが 1 回だけ取りこまれるようにする

#include guard と同様の効果。

( プリプロセッサのマクロ定義を使用して、
  ファイルの内容が複数回インクルードされないようにする )

コンパイラによる拡張機能。言語機能ではない。

 

+α

 複数回読み込むのを回避しているが、コンパイラに依存する為、
コンパイラによっては使えないことがある
また、予期せぬ不具合の原因になることも。

 

・予期せぬ不具合・

複数 include しない為に、
そのファイルが既に include されたことがあるかを
コンパイラは覚えておく必要がある。

include 済みのファイルかどうかを判定するために、ファイル単位
一意のシンボル名を定義すると仮定。

その一意の文字列生成の為にファイルパス ( とてつもなく長いパス ) を
埋め込んでシンボル名を作るような実装になっていた場合、
途中でパスが切られてまったく同じシンボル名にり、
初めて include したファイルなのにスキップされるという不具合が
発生するもよう。

 

#pragma once を使わなくても、マクロによるインクルードガードで
コンパイラ依存の無い形で実現できる、とあった。マクロ?よく分からん。

 

こちらから。
http://cpp.aquariuscode.com/include_guard
https://msdn.microsoft.com/ja-jp/library/4141z1cx.aspx

 

以上。