Редактировать: Теперь я вижу, что исходный вопрос был помечен C
, а не C++
, и кто-то ошибочно пометил его C++
(отменил пометку).
Одним из решений, как уже упоминалось, является добавление typedef
до объявления struct
, однако, поскольку это C++
(в соответствии с тегом вопроса), а не C
, более идиоматичным и более коротким способом будет просто бросить висячую "Струну"
struct String {
int length;
int capacity;
unsigned check;
char ptr[0];
};
Этого достаточно, чтобы ввести тип с именем String
, причина, по которой исходный код не работал, заключалась в том, что в дополнение к введению типа с именем String
вы ввели переменную с именем String
, которая скрывала тип.