关于typedef struct求解释
下面三种定义有什么不同?主要是第一种定义起到了什么作用,同事说有构造函数,不懂,求大牛解释。
typedef struct _A
{
}A;
typedef struct
{
}B;
struct C
{
};
[解决办法]
typedef struct _A
{
}A;
typedef struct
{
}B;
struct C
{
};
C中的最开始的定义是如下:
struct C
{
};
后来C++来了,也支持这么定义,但是和C有区别,C中使用这个结构体类型必须使用struct C,而C++可以使用struct C,也可以使用C。
后来为了方便,不管在C中还是C++中,只要按照如下写了,就可以省略struct
typedef struct
{
}B;
至于下面这个方法和有指定A没指定A都一样。
typedef struct _A
{
}A;
就是这里做了两件事,第一个A,是顶一个结构体struct A,第二个A是利用typedef重命名为A。
相当于是下面的结合:
struct _A{}
typedef struct _A A;
甚至_A可以直接用A代理。
至于构造函数是否有,只要是C++里面的结构体,不管哪种定义,都有构造函数。
[解决办法]
对于C++来说差别不大
对于C来说,声明A和B类型的对象不需要前面加struct,_A和C要
构造函数什么的是瞎扯,结构是否自动生成构造函数取决于C还是C++
这种风格Windows SDK普遍使用(因为是C的,能减少struct关键字的使用),Linux内核极力反对(认为typedef尽量少用,否则导致类型混乱)
呵呵,自己看着办吧