读书人

关于typedef struct求解释,该怎么处理

发布时间: 2012-05-09 12:13:59 作者: rapoo

关于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尽量少用,否则导致类型混乱)

呵呵,自己看着办吧

读书人网 >C++

热点推荐