1
typedef struct test { 
    int a;
}; 

int main(void) { 
test t; 
t.a = 3; 
} 

上記はコンパイルされません。ただし、構造体を次のように変更すると:

typedef struct {
    int a; 
}test; 

すべて正常に動作します。どうしてこれなの?構造体が typedef と同じ行にあるコード例をたくさん見てきましたが、コンパイルされていません。

4

3 に答える 3

2

構造体で使用する場合typedeftypedef名前は構造体のに置かれます。これが、C が機能するように指定されている方法です。

最初のものを (typedef明らかに なしで) 使用する場合は、structキーワードを使用する必要があり、2 番目の場合は名前のみを使用する必要があります。

typedef構造などに同じ名前を使用することもできます

typedef struct test { 
    int a;
} test;
于 2013-09-12T17:23:12.240 に答える