Неполные типы
Неполный тип — это тип, который описывает идентификатор, но не содержит информацию, необходимую для определения размера идентификатора. Неполным типом может быть:
Тип структуры, для которой еще не были определены члены.
Тип объединения для которого еще не были определены члены.
Тип массива, для которого еще не были определены размерности.
Тип void
является неполным типом, который невозможно сделать полным. Чтобы дополнить неполный тип, укажите отсутствующие данные. В следующих примерах показано, как создать и дополнить неполные типы.
Чтобы создать неполный тип структуры, объявите тип структуры, не указывая ее члены. В этом примере указатель
ps
указывает на неполный тип структуры с именемstudent
.struct student *ps;
Чтобы дополнить неполный тип структуры, объявите тот же самый тип структуры ниже в той же самой области видимости и задайте его члены, как в следующем примере:
struct student { int num; } /* student structure now completed */
Чтобы создать неполный тип массива, объявите тип массива, не указывая для него число повторений. Например:
char a[]; /* a has incomplete type */
Чтобы дополнить неполный тип массива, объявите то же самое имя ниже в той же самой области видимости и задайте его число повторений, как в следующем примере:
char a[25]; /* a now has complete type */