В C внутренним структурам не разрешено иметь имена, это связано с тем, что вам обычно нужно ссылаться на структуры в C:
struct A {
...
};
struct B {
struct A my_a;
};
Таким образом, для наивного компилятора C неясно,следует ожидать переменную или объявление типа.
В этом случае, однако, при использовании компилятора c ++ он будет работать так, как вы ожидаете, поскольку C ++ не ожидает префикса структуры для переменнойзамедления.
Решение состоит в том, чтобы либо удалить имя из внутренней структуры, либо объявить его вне другой структуры.