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