[1816] Re:標準ライブラリのヘッダファイルのインクルードガード
投稿者:774RR
2012/04/02 09:50:55
ついでに C++ の場合 ISO/IEC 14882:1998 17.4.2.1 Headers に同等の文言があります。
もっとついでに C にも C++ にも
・「ヘッダ」は必ずしもソースファイルでなくてよい
・ヘッダの < ... > で囲まれた文字の列がソースファイル名でなくてよい
とあります(関連節の脚注など)
処理系は「ヘッダ」(のうちの特に <標準ヘッダ>)の1回目の読み込みに関して
・ソースファイルとして提供してもいい
・プリコンパイル済みバイナリファイルで提供してもいい
・処理系固有のビルトイン機能として実装してもいい
・謎の「ほげほげ機能」の結果として実装してもいい
ようです。
2回目以後の読み込みに対しては
・正しく include ガードされているソースファイルとして提供してもいい
・処理系側で2回同じ標準ヘッダを読まない機構を用意してもよい
・処理系側ビルトイン機構として同一<ヘッダ>を2回読まない機構を用意
・#pragma once 類似機構を設けて<ヘッダ>側記載で回避
わけです。
なんにせよ [実装手段] は問われていない模様です。