1

私は個人的なプロジェクトに取り組んでおり、3 ou 4 機能のみを公開したいと考えています。これの問題の 1 つは、私の .c ファイルがますます多くの静的関数を取得していることです。現在、すでに 21 個の静的関数があります。

多くの静的関数を含む .c ファイルを整理する最良の方法は何でしょうか? これらの静的関数を独自の .c ファイルに分離してから、それらをメインの .c ファイルに含めることは (良い方法で) 大丈夫ですか? ある機能から別の機能に簡単に移動できるように、別のファイルを作成できるアプローチをお勧めします(ファイルを切り替えるだけでスクロールする必要はありません)。

ありがとう

編集

問題をよりよく理解するために、静的関数の管理が困難な.cファイルへの直接リンクを次に示します。

https://github.com/AntonioCS/mustache/blob/master/src/mustache.c

4

4 に答える 4

3

インクルードは、大きなコンパイル単位を複数のファイルに分割するために機能します。ただし、インクルード ファイル.cに という名前を付けることは強くお勧めしません。その拡張子は、ツールと他の開発者の両方に対して別のコンパイル ユニットを示すためです。.inl代わりに次のような名前を付けることを検討してください。

于 2014-09-18T17:07:35.340 に答える
1

関数の大きなセットでは、いくつかの関数、いくつかの関数ではstaticないため、問題は数百の関数に達する可能性があります。その名前空間を管理するには、次の 2 つのアプローチを検討してください

  1. static関数を 2 つのグループに分割します。実際staticには、それを必要とする 1 つの .c ファイルにのみ存在するものです。彼らはstaticキーワードを使用します。

    他のグローバル関数と同様に、さまざまな .c ファイルに存在する関数の 2 番目のグループ。static彼らはキーワードを使用しません。これらの関数も で始まる必要がありますmustache_。これらと他のグローバル関数の違いは、それらを宣言するインクルード ファイルがコードに対してプライベートであり、パブリックではないことです。したがって、コードにはmustache.hとがありmustache_private.hます。

    これは技術的にグローバル名前空間を汚染しますが、一般に、「口ひげ」オブジェクトのユーザーは、で始まるオブジェクトとの衝突を避けるmustache_必要があるため、これらの「プライベート」関数との驚くべき競合はありません。

  2. 2 番目のアプローチは、mustache ルーチンのライブラリ管理を使用して、残りのコードから見える名前を制御することです。このソリューションは、プラットフォーム/コンパイラ固有です。

于 2014-09-18T19:04:01.000 に答える
0

グローバル呼び出しを減らすために C プログラムを編成するということは、プログラム ロジックをモジュール化し、各モジュールを独自のデータと関数に対して責任を持たせることを意味します。これはカプセル化と呼ばれ、OOP の原則です。すでに C に精通しているので、技術的な制約がない限り、C++ を使用したオブジェクト指向について読んで、コード ベースを更新してください。

于 2014-09-18T18:33:25.717 に答える