構造体名と関数名に同じ名前を使う。

そもそも宣言や定義時は何も考えず同じ名前で書ける模様。
構造体の方は、structキーワードで修飾すれば変数の宣言や定義が出来る。

#include <iostream>

// Hoge構造体
struct Hoge
{
	Hoge()
	{
		std::cout << "Constructor Hoge" << std::endl;
	}
};

// Hoge関数
void Hoge()
{
	std::cout << "Function Hoge" << std::endl;
}

// main関数
int main()
{
	struct Hoge hoge;	// structが無いとエラーになる。
	Hoge();			// Hoge関数が呼ばれる。
	struct Hoge();		// Hoge構造体のコンストラクタが呼ばれる。
}

Cの関数statなんかは、同名の構造体を引数に取っている。


そもそもCは変数の宣言・定義時にstructキーワードが必須。


でもこういう使い方はしたくないなぁ。
せめて構造体の方をstat_infoとかそういう名前にして
データなのか関数なのかを判別しやすくしたいところ。