Я пытаюсь лучше понять C и, пытаясь понять ошибку, которую я получил, я наткнулся на этот вопрос.В конце концов я понял, что я делаю неправильно, но код в этом вопросе сбивает меня с толку:
struct {
uint8_t time;
uint8_t type;
uint8_t phase;
uint8_t status;
} Raw_data_struct;
typedef struct Raw_data_struct Getst_struct;
void Getst_resp(Getst_struct Data);
Насколько я понимаю, проблема заключалась в том, что название структуры было помещено не в том месте,что означало, что структура была определена анонимно, и поэтому имя «Raw_data_struct» не было доступно при использовании typedef.
Однако, что компилятор сделал с именем?Я проверил на этом сайте cpp reference , но они упоминают только два типа объявления структуры, одним из которых является определение.Кажется, что определение не учитывает ничего после списка struct-объявление.Тем не менее, ни один компилятор, который я пробовал, не идентифицировал это как ошибку (я пробовал и gcc, и clang).
Я хотел бы понять, как используется объявление struct.Имя «Raw_data_struct» используется для чего-либо или просто игнорируется?Есть ли причина, по которой это не ошибка?
Спасибо, что прочитали это!