6

struct関数にポインターを渡そうとしています。file1.h にa がありtypedef、file2.h にはポインターしか必要ないため、そのヘッダーのみを file2.c に含めたいと考えています。C++ では、ここで行ったように記述しますが、C99 を使用すると機能しません。誰かがstruct完全な定義なしでポインタを渡す方法について何か提案があれば、それは非常に高く評価されます. コンパイラ - gcc.

file1.h

typedef struct
{
    ...
} NEW_STRUCT;

file2.h

struct NEW_STRUCT;

void foo(NEW_STRUCT *new_struct); //error: unknown type name 'NEW_STRUCT'

file2.c

#include "file2.h"

#include "file1.h"

void foo(NEW_STRUCT *new_struct)
{
    ...
}
4

2 に答える 2

1

これを試すことができます:

file1.h

typedef struct _NEW_STRUCT  // changed!
{
    ...
} NEW_STRUCT;

file2.h

struct _NEW_STRUCT; // changed!

void foo(struct _NEW_STRUCT *new_struct); // changed!

file2.c

#include "file2.h"
#include "file1.h"

void foo(NEW_STRUCT *new_struct)
{
    ...
}
于 2015-01-08T14:32:11.953 に答える