宣言ってブロックの最初でしかできないはずだろ。

int main()
{
 int a;
 a = func();
 int b; /*これは駄目*/
 
 return 0;
}