構造体を宣言するこれらの2つの方法の違いは何ですか?
最初の方法:
struct x {};
2番目の方法:
struct _x {} x;
最初はタイプのみを定義しますstruct x。2番目はタイプstruct _x を定義し、。という名前のそのタイプの変数を定義しますx。
おそらくあなたが考えていたものではありませんが、アンダースコアで始まる名前_xはファイルスコープで予約されているため、これが他のスコープ内にない限り、2番目の名前の動作は未定義です。
struct _x 2番目の方法は、typeという名前の変数と、という名前のこのタイプの変数を宣言しますx。最初のものはタイプを宣言するだけstruct xです。
2番目の方法は基本的にと同じです
struct _x{}; // define a type
struct _x x; // allocate a variable of type struct _x