Что такое «предварительное объявление» и чем отличаются «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)

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