gpt4 book ai didi

c - 结构体的存储大小未知

转载 作者:行者123 更新时间:2023-12-04 08:26:05 25 4
gpt4 key购买 nike

我想在 main() 函数范围内拥有我的结构。
当我这样做并使用 时类型定义 我收到一个错误:storage size of ... isn't known

typedef struct client client;

int main()
{


struct client {
int var;
char c;
};


client person1;

return 0;
}
我这样做是为了摆脱 struct 关键字。
为什么会出现此错误,以及如何通过在 main() 函数中创建结构来成功执行此错误?

最佳答案

您得到的错误是因为您实际上有两种名为 struct client 的类型。声明在不同的范围内。typedef声明一个 struct client在文件范围内并给它别名 client .然后定义 struct client内部main函数,它屏蔽了文件范围内的那个。当您尝试声明类型为 client 的变量时,它指的是struct client在从未定义的文件范围内。
为了解决这个问题,typedef并且结构定义需要在同一范围内。所以你可以把它们都放在 main :

int main()
{
typedef struct client client;

struct client {
int var;
char c;
};

client person1;

return 0;
}
或者两者都在文件范围内:
typedef struct client client;

struct client {
int var;
char c;
};

int main()
{
client person1;

return 0;
}

关于c - 结构体的存储大小未知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65253375/

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