gpt4 book ai didi

C语言 : Names after the struct-declaration-list

转载 作者:太空狗 更新时间:2023-10-29 15:28:18 56 4
gpt4 key购买 nike

我试图更好地理解 C,在试图理解我自己犯的一个错误时,我遇到了 this问题。我最终明白我做错了什么,但那个问题中的代码让我感到困惑:

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);

据我了解,问题是结构的名称放在了错误的位置,这意味着该结构是匿名定义的,因此在使用 typedef 时名称“Raw_data_struct”不可用。

但是,编译器对这个名字做了什么?我检查了 cpp reference在此站点上,但他们仅提及两种类型的结构声明,其中一种是定义。该定义似乎没有为结构声明列表之后的任何内容留出任何余地。然而,我尝试过的编译器都没有将其识别为错误(我同时尝试了 gcc 和 clang)。

我想了解如何使用结构声明。名称“Raw_data_struct”是用于任何用途,还是只是被忽略了?这不是错误的原因是什么?

感谢您阅读本文!

最佳答案

结构定义之后的名称是该结构类型范围内的变量。在这种情况下,Raw_data_struct 是该匿名结构类型的变量。

关于C语言 : Names after the struct-declaration-list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50748682/

56 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com