Объявление переменной в конце определения структуры typedef - PullRequest
2 голосов
/ 10 мая 2019

Мы знаем, что объекты структуры могут быть объявлены в конце определения структуры следующим образом:

struct vertex
{
float x,y,z;
}v1;

Является ли такое объявление объекта, как v1 возможно при использовании typedef struct?

typedef struct vertex
{
float x,y,z;
} vertex;

Обязательно ли теперь объявлять объекты отдельно с помощью

vertex v1;

не могут ли они быть добавлены в конце определения структуры в этом случае?

Ответы [ 2 ]

2 голосов
/ 10 мая 2019

Нет, этого не может быть.

typedef используется для создания псевдонима / синонима для другого типа. Его нельзя использовать для объявления переменных.

typedef struct ver
{
float x,y,z;
} vertex;

Здесь vertex совпадает с struct ver (я немного изменил имя для лучшего понимания).

Как только тип (псевдоним) создан, вы используете его для создания переменной с использованием другого идентификатора, такого как

vertex v;
struct ver v1;
2 голосов
/ 10 мая 2019

Если вы используете «класс хранения» typedef, то имена, определенные после структуры, являются именами typedef - псевдонимами для типа структуры.Итак, vertex - это имя типа.Когда вы определяете имя типа, вы также не можете определять никакие переменные.

...