知りませんでした。これ C/C++ の仕様なんでしょうか?
typedef struct SomeStruct { int hoge; } SomeStruct, *pSomeStruct;
こんな構造体を作っても問題なく使えます。今まで名前がかぶらないように苦労していたのが馬鹿みたいですよね。本来ならばタグ名の前に struct が付くので識別するのに問題はないということでしょうか。
Byerkut さんもブログを始めてからいろいろと学ぶことがあります。
“struct タグ名”で構造体型です。タグ名単独では型名とはならないので、typedefでタグ名と同じ名の型を宣言できます。”struct SomeStruct”型があって、typedefで新たに”SomeStruct”型を作るということです。 ちなみにC++では構造体変数を定義する際のstructキーワード(もちろんclassも)は省略可能で、タグ名が型名の如く使用できます。毎度毎度わざわざtypedefするのは面倒ですからね。というわけでC++なら、そもそも構造体型のtypedef自体が不要です。
> koma さん
こんにちは!情報ありがとうございました m(_ _)m
C++ では struct SomeStruct {}; の SomeStruct で型名と認識するんですね。 だいぶ情報がすっきりしました(^^; ありがとうございます。
Comments
“struct タグ名”で構造体型です。タグ名単独では型名とはならないので、typedefでタグ名と同じ名の型を宣言できます。”struct SomeStruct”型があって、typedefで新たに”SomeStruct”型を作るということです。
ちなみにC++では構造体変数を定義する際のstructキーワード(もちろんclassも)は省略可能で、タグ名が型名の如く使用できます。毎度毎度わざわざtypedefするのは面倒ですからね。というわけでC++なら、そもそも構造体型のtypedef自体が不要です。
> koma さん
こんにちは!情報ありがとうございました m(_ _)m
C++ では struct SomeStruct {}; の SomeStruct で型名と認識するんですね。
だいぶ情報がすっきりしました(^^;
ありがとうございます。
Contributions