0

2 つのヘッダー ファイル api.h と impl.h があります。

api.h外部ファイルに表示され、他の「.c」ファイルに含まれます。だから api.h が含まれていますimpl.h

api.h は 2 つの構造体を定義します

typedef struct
    {
    uint32_t att;
    union
    {
        struct
        { 
            void* buffer;
            size_t length;
        } x;  
        struct
        {
            int a, b;
        } v;
    } content;
}dummy;

impl.h には、この構造体を使用する他のいくつかの構造体と関数 def があります。前方宣言を試みましたが、役に立ちません。

助けてください 。

4

3 に答える 3

2

実際、あなたdummyは構造体ではなく、typedef名前のない構造体です。構造体に名前を付けてみてください。その後、前方宣言できます。

typedef struct sdummy dummy; // forward declaration

void foo(dummy *);

struct sdummy { ... }; // definition
于 2013-06-07T08:55:26.117 に答える
1

コードを並べ替えてapi.h型宣言が の前になるようにする#include "impl.h"か、(現在は匿名の) 構造体自体に , のような名前を付けdummydummy_dummy_s前方宣言を追加できるようにします。

typedef struct dummy_ dummy;

impl.h

于 2013-06-07T08:55:36.560 に答える