Что такое «предварительное объявление» и чем отличаются «typedef struct X» и «struct X»?

Я новичок в программировании на C и знаю разницу между объявлением типа структуры и объявлением структуры typedef. Я наткнулся на ответ, в котором говорится, что если мы определим структуру, например:

typedef struct
{ 
some members;
}struct_name;

Тогда это будет похоже на предоставление псевдонима анонимной структуре (так как у нее нет имени тега). Так что это не может быть использовано для предварительного объявления. Я не знаю, что означает «предварительная декларация».

Кроме того, я хотел знать, что для следующего кода:

typedef struct NAME
{ 
some members;
}struct_alias;

Есть ли разница междуNAME а такжеstruct_alias? Или оба равны, поскольку struct_alias является псевдонимом struct NAME?

Кроме того, мы можем объявить переменную типаstruct NAME как это:

struct_alias variable1;

и / или как:

struct NAME variable2;

или как:

NAME variable3; 

Ответы на вопрос(5)

Ваш ответ на вопрос