8

重複の可能性:
名前のない構造体の前方宣言

私が持っている場合

typedef struct tagPAGERANGE
{
    int iFirstPage;
    int iLastPage;
} PAGERANGE;

私はそれをそのように宣言することができます

struct tagPAGERANGE;
typedef struct tagPAGERANGE PAGERANGE;

しかし、私が持っているのは

typedef struct
{
    int iFirstPage;
    int iLastPage;
} PAGERANGE;

どうすればいいのかわかりません。この構造体へのポインタを保持したいだけです。現在、かなりのヘッダーを含めるか、構造体の定義を複製するかのどちらかで立ち往生しています。

4

2 に答える 2

13

それは不可能だ。名前付き構造体のみを宣言できます。

名前のない構造体を識別するものと、それが必要な構造体であることをコンパイラーにどのように伝えるかを考えてください。名前がない場合は、メンバーによって識別されるため、メンバーを提供する必要があります。つまり、定義する必要があります。したがって、それを宣言するだけでは不十分です。定義自体以外に、贅沢な識別子はありません。

于 2012-04-20T16:02:09.897 に答える
2

これは C++ コードで使用されるため、typedef を完全に削除してください。これらは C++ では不要で不適切なスタイルです。

本当の解決策は、名前付き構造体を使用することです。

struct foo; // forward declaration

struct foo {
    // … implementation
};

typedef は役に立ちません。

于 2012-04-20T16:15:47.310 に答える