结构体变量的多次声明

bbaimu
  • 694

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

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

用的是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;//  赋值类型不兼容
回复
阅读 3.4k
3 个回答

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

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

    typedef struct A
    {
    int  a;
    } tA;

    typedef struct A tB;


    tA  ta;
    tB  *tb =  & ta;

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

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

你知道吗?

宣传栏