Одно слово: «Сфера».
Если тип вашей структуры определен в main()
, то область видимости этого типа равна main
. Ничто за пределами main
не может знать об этом. Если вы хотите передать его другой функции, очевидно, что функция должна знать тип, но если тип известен только в main
, то, очевидно, функция не может знать об этом.
Решение? Переместите область типа туда, где ее видят как основная, так и функция «получение».
Редактировать: встроенные типы, такие как int
, char
и т. Д. Уже имеют глобальный охват и поэтому известны повсюду. Здесь мы имеем дело с типом определения пользователя, объем которого ограничен в зависимости от того, где он определен.
Те же правила применяются к переменным (или экземплярам типа) - глобальная переменная видна в любом месте (я знаю, вы можете «скрыть ее» локальным с тем же именем - позволяет не разделить волосы; , но локальная переменная в main()
видна только внутри main()
.
Когда вы говорите «структура», вы говорите о типе (определенном с помощью 'struct thingy {... stuff ...};'), или вы говорите о переменных с этим типом (определяется с помощью 'struct thingy myThingy;??) – immibis
Я имею в виду функции, которые получают экземпляры структуры - то есть переменные с этим типом. – Leponzo
так «почему вы не можете передавать переменные, определенные в' main', другим функциям, если у них есть тип структуры? »? Ответ на это вы можете! – immibis