4

typedef宣言されていない構造で使用すると、コンパイルエラーがスローされないのはどうしてだろうと思っています。以下のコードは、警告やエラーなしでコンパイルされています。私の疑問はtypedef、宣言されていない構造がどのようにしてエラーをスローしないのかということです。すべてのプラットフォームで同じですか

#include <stdio.h>

typedef struct undeclared_struct_st UND_STRUCT_S;

int main()
{
    printf("\nhello world\n");
    return 0;
}

このプログラムを Suse 11 と gcc 4.3.4 で実行しています。

4

2 に答える 2

8
typdef struct undeclared_struct_st UND_STRUCT_S;

有効です。struct undeclared_struct_st不完全な型として宣言し、次にtypedefUND_STRUCT_Sとして宣言しますstruct undeclared_struct_st。不完全型のオブジェクトは作成できませんが、不完全型のオブジェクトへのポインタは作成できます。struct undeclared_struct_stその後、別の翻訳単位で宣言できます。

于 2013-07-22T11:53:15.583 に答える
5

これは前方宣言と呼ばれ、完全に正当な C です。

于 2013-07-22T11:52:27.727 に答える