结构体变量的多次声明

发布于 2022-09-03 03:25:11 字数 329 浏览 18 评论 0

标签允许多个声明使用同一个成员列表,并且创建同一种类型的结构体

以下是小菜的理解,不知如何正确理解这句话

用的是vs编译环境

typedef struct A  
{
int  a;
}A;

typedef struct A  
{
int  a;
}B;
//error C2011:struct 类型重定义
typedef struct A  
{
int  a;
}A;

typedef struct A  
{
int  a;
}B;


A  ta;
B  *tb =  & ta;//  赋值类型不兼容

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

谁把谁当真 2022-09-10 03:25:11

多次声明的意义何在???

岁月蹉跎了容颜 2022-09-10 03:25:11

我认为你的代码应该报重复定义的错误.
你用的什么编译器?我用gcc编译,提示的错误是重复定义struct A

    typedef struct A
    {
    int  a;
    } tA;

    typedef struct A tB;


    tA  ta;
    tB  *tb =  & ta;

这样其实没有错误也没有警告.

吃素的狼 2022-09-10 03:25:11

你是不是在不同的cpp里声明的这两个struct?不同cpp的话,虽然名字都是A,但是是不同的两个struct,自然不能直接使用。
如果是在同一个cpp,理论上会报错,至少也是warning才对。莫非是编译器自动把A给忽略了,直接认为你声明了A、B两种struct?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文