0

次のCコードがあるとします。

  #define SOME_MACRO(m)  \
  void (*f)(m);          \
  unsigned int a;        \
  int *self;

そして、それを行う構造体

typedef struct _Str {
   SOME_MACRO(whatever)
   char sthg[2];
} STR;

私の質問は、このデザインの選択の目的は何ですか? たとえば、間接的に時間を節約しているわけではありません。のコードをモジュール化する試み以外に何かあり_STRますか?

4

3 に答える 3

3

私のプロジェクトはそのパターンを使用して、特定のメソッド/メンバーがすべてのプロジェクト クラスで利用できるようにします (マーシャリングなど)。繰り返しますが、これ以上の例がなければ確認する方法はありませんが、それが私の理論です.

于 2012-05-26T16:33:40.757 に答える
0

SOME_MACRO(m)は、型の1つの引数を受け取るものを返さない関数への関数ポインターm、およびunsignedintとintへのポインターに変換されます。このようなものの背後にある設計上の理由は非常にケース固有であり、コードのより複雑な例がなくても、これはあなたが言及したようにコードをモジュール化するために使用されると思います。

于 2012-05-26T16:31:27.590 に答える
-1

あなたが与えたコードから、私も説明をすることはできませんが、それは単純に見えるので、「SOME_MACRO」の意味はいくつかのマクロテストコードであるため、新しいプログラマーによる単なるテストマクロだと思います。 ..

于 2012-05-26T16:39:11.927 に答える