“ .h”の使用パターンを文書化する良いリファレンスは何ですか? Cのファイル? [複製]

StackOverflow https://stackoverflow.com/questions/256277

  •  05-07-2019
  •  | 
  •  

質問

    

この質問にはすでに回答があります:

         

" Cインターフェースと実装"データ構造の興味深い使用パターンをいくつか示していますが、他にも確かなものがあると思います。

http://www.amazon.com/Interfaces-Implementations-Techniques-Addison -Wesley-Professional / dp / 0201498413

役に立ちましたか?

解決

ゴダード宇宙飛行センター(NASA)Cコーディング標準をご覧ください(この URL )。興味深いガイドラインがいくつかあります。

独自のコードに採用した特定のガイドラインの1つは、ヘッダーが自己完結型であることです。つまり、次のように記述できるはずです。

#include "header.h"

およびコードは、以前に何が行われたかに関係なく、他の必要なヘッダーを含めて正しくコンパイルする必要があります。これを保証する簡単な方法は、最初のヘッダーとして実装ソースにヘッダーを含めることです。それがコンパイルされる場合、ヘッダーは自己完結型です。コンパイルできない場合は、修正するようにしてください。もちろん、これにはヘッダーがべき等であることを確認する必要もあります-ヘッダーが含まれる頻度に関係なく同じように動作します。そのための標準的なイディオムもあります:

#ifndef HEADER_H_INCLUDED
#define HEADER_H_INCLUDED
...operational body of header.h...
#endif /* HEADER_H_INCLUDED */

もちろん、#defineをファイルの下部ではなく上部に配置することが不可欠です。それ以外の場合、これに含まれるヘッダーにheader.hも含まれていると、無限ループになります-正常ではありません。次の戦略を採用することにした場合でも:

#ifndef HEADER_H_INCLUDED
#include "header.h"
#endif /* HEADER_H_INCLUDED */

ヘッダーを含むコード内-推奨されない推奨事項-ヘッダー自体にもガードを含めることが重要です。


2011-05-01の更新

上記のGSFC URLは機能しなくなりました。詳細については、質問の回答の回答を参照してください>ヘッダーに#includeを使用する必要があります。この質問への相互参照も含まれています。

2012-03-24の更新

参照されているNASA Cコーディング標準は、インターネットアーカイブからアクセスおよびダウンロードできます。

http ://web.archive.org/web/20090412090730/http://software.gsfc.nasa.gov/assetsbytype.cfm?TypeAsset = Standard

他のヒント

Makeheaders は興味深い手法です。ツールを使用してヘッダーを生成します。 MakeheadersはDR Hippの cvstrac および化石

John LakosのLarge-Scale C ++ Software Designをご覧ください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top