不透明な構造体定義を別のヘッダーファイルに入れる

St.Antario

不透明な構造体宣言を含むパブリックインターフェイスを備えたライブラリを設計しています。

lib_public.h

typedef struct lib_struct lib_struct;

void foo(lib_struct *ptr);

void bar(lib_struct *ptr);

lib_structにそれを置くための悪いデザインのようですので、不透明な構造体は、OS固有の実装の詳細を隠しlib_struct.h、直接。しかし、私はまだそのメンバーを使用するユニットテストを書きたいと思っています。現在、構造体定義のみを含む別のプライベートヘッダーファイルを作成することにしました。

lib_struct_linux.h

struct lib_struct{
   int epoll;
   int acceptor_socket;
}

したがって、実装lib_struct.cと単体テストlib_struct_test.cには、次のようにこのヘッダーが含まれます。

lib_struct.c

#include "lib_struct_linux.h"

//function definition

lib_struct_test.c

#include "lib_struct_linux.h"

//unit tests

構造体が1つのプライベートヘッダーファイル(lib_struct_linux.h)で定義され、構造体を操作する関数が別のパブリックヘッダーファイル(lib_public.h)で宣言されているという意味で、このような設計は厄介に見えますそして、さらに別の実装ファイル(lib_struct.cでの関数の定義

それは一般的なアプローチですか?いいえの場合、より良い方法でそれを設計することはどのように可能でしょうか。

アンゲヴァンテはもはやSOを誇りに思っていません

はい、これはまったく問題ありません。

構造体が1つのプライベートヘッダーファイル(lib_struct_linux.h)で定義され、構造体を操作する関数が別のパブリックヘッダーファイル(lib_public.h)で宣言されているという意味で、このような設計は厄介に見えますそして、さらに別の実装ファイル(lib_struct.cでの関数の定義

これを言い換えると、「パブリックインターフェイスはパブリックヘッダーにあり、実装のみの宣言はプライベートヘッダーにあり、実装はソースファイルにあります。」散らかっているようには聞こえませんが、実際、私には完全に良いデザインのように聞こえます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

C-ヘッダーファイルの構造体定義

分類Dev

ヘッダーファイルで定義されている構造体のリストを取得します

分類Dev

Cファイルで不透明な構造体を再宣言する

分類Dev

ヘッダーファイルから既存の構造体に演算子定義を追加するにはどうすればよいですか?

分類Dev

不透明な構造体とのインターフェースにcamlidlを使用する

分類Dev

ヘッダーファイルで構造体を宣言し、.cファイルで定義するにはどうすればよいですか。

分類Dev

不透明なC構造体からフィールドを公開する

分類Dev

ヘッダーファイルの構造体定義で行われた文字列宣言

分類Dev

複雑な構造体/不透明ポインター/関数をC ++ヘッダーからDelphiに変換します

分類Dev

.ccファイルによってアクセスおよび入力されるヘッダーファイル内の構造体を宣言します

分類Dev

ヘッダーファイルの構造体がソースファイルにエラーを生成する

分類Dev

ヘッダーファイルに構造体がある

分類Dev

ヘッダーファイル内で定義された複数の構造-それらを別々のhファイルとcppファイルに移動する必要があります

分類Dev

構造体をヘッダーファイルに渡す標準的な方法

分類Dev

Cのヘッダーファイル内の構造体を認識する

分類Dev

c ++-ヘッダーファイルで使用するときに構造体が認識されない

分類Dev

宣言されているが定義されていない不透明な構造体

分類Dev

ヘッダーファイルを宣言した後のC ++構造体が認識されない

分類Dev

別のヘッダーファイル内で構造体を宣言すると、LNK2001エラーが発生するのはなぜですか?

分類Dev

スクロールでヘッダーの背景を不透明にする方法

分類Dev

Cヘッダーファイルで定義された自己参照構造体はエラーを生成します

分類Dev

別のcファイルで定義されている構造体にアクセスしますか?

分類Dev

ヘッダーファイルで定義された構造体を関数パラメーターとして使用する場合、「不完全な型は許可されません」

分類Dev

ObjectiveC-ヘッダーファイルでtypedef構造体を使用する

分類Dev

他の機能もあるヘッダーファイルの構造体を使用するにはどうすればよいですか?

分類Dev

GCCが構造体(.BMPファイルヘッダー)のサイズを変更しないようにする

分類Dev

スティッキーテーブルヘッダー構造の不透明度の問題

分類Dev

不透明なボディを持つUITableViewヘッダーの明確な背景を設定する方法

分類Dev

ヘッダーファイルの省略された構造体の再定義は標準に準拠していますか?

Related 関連記事

  1. 1

    C-ヘッダーファイルの構造体定義

  2. 2

    ヘッダーファイルで定義されている構造体のリストを取得します

  3. 3

    Cファイルで不透明な構造体を再宣言する

  4. 4

    ヘッダーファイルから既存の構造体に演算子定義を追加するにはどうすればよいですか?

  5. 5

    不透明な構造体とのインターフェースにcamlidlを使用する

  6. 6

    ヘッダーファイルで構造体を宣言し、.cファイルで定義するにはどうすればよいですか。

  7. 7

    不透明なC構造体からフィールドを公開する

  8. 8

    ヘッダーファイルの構造体定義で行われた文字列宣言

  9. 9

    複雑な構造体/不透明ポインター/関数をC ++ヘッダーからDelphiに変換します

  10. 10

    .ccファイルによってアクセスおよび入力されるヘッダーファイル内の構造体を宣言します

  11. 11

    ヘッダーファイルの構造体がソースファイルにエラーを生成する

  12. 12

    ヘッダーファイルに構造体がある

  13. 13

    ヘッダーファイル内で定義された複数の構造-それらを別々のhファイルとcppファイルに移動する必要があります

  14. 14

    構造体をヘッダーファイルに渡す標準的な方法

  15. 15

    Cのヘッダーファイル内の構造体を認識する

  16. 16

    c ++-ヘッダーファイルで使用するときに構造体が認識されない

  17. 17

    宣言されているが定義されていない不透明な構造体

  18. 18

    ヘッダーファイルを宣言した後のC ++構造体が認識されない

  19. 19

    別のヘッダーファイル内で構造体を宣言すると、LNK2001エラーが発生するのはなぜですか?

  20. 20

    スクロールでヘッダーの背景を不透明にする方法

  21. 21

    Cヘッダーファイルで定義された自己参照構造体はエラーを生成します

  22. 22

    別のcファイルで定義されている構造体にアクセスしますか?

  23. 23

    ヘッダーファイルで定義された構造体を関数パラメーターとして使用する場合、「不完全な型は許可されません」

  24. 24

    ObjectiveC-ヘッダーファイルでtypedef構造体を使用する

  25. 25

    他の機能もあるヘッダーファイルの構造体を使用するにはどうすればよいですか?

  26. 26

    GCCが構造体(.BMPファイルヘッダー)のサイズを変更しないようにする

  27. 27

    スティッキーテーブルヘッダー構造の不透明度の問題

  28. 28

    不透明なボディを持つUITableViewヘッダーの明確な背景を設定する方法

  29. 29

    ヘッダーファイルの省略された構造体の再定義は標準に準拠していますか?

ホットタグ

アーカイブ