2

Visual C++ でこれを実行するとエラーが発生するのはなぜですか?

struct S { };
typedef S *S;

C++ では、以前は or としてのみ宣言されていた名前を使用できませんかtypedefclassstruct?
それとも、何が起こっているのか誤解していますか?

4

3 に答える 3

1

構造体名は型名と競合しないため、これは C では問題ありません。構造体名は でstruct Sあり、型名はS. ただし、C++ では、すべての名前が同じ名前のプールに由来すると見なされるため、例の 2 つの名前が衝突します。

于 2012-12-02T22:09:27.570 に答える