首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

不要typedef 来定义结构体有什么好处

2013-04-20 
不用typedef 来定义结构体有什么好处?一个比我长一岁的程序员跟我讲不用typedef来定义struct好,但具体又不

不用typedef 来定义结构体有什么好处?
一个比我长一岁的程序员跟我讲不用typedef来定义struct好,但具体又不告诉我。于是个人想了以下两个:
a.struct + 名称可以用来声明,比如封装的时候可以放在头文件里
b.VS2005的类视图会找到struct后面的名字作为类视图的标记

请教下各位,不用typedef来定义结构体别名,而用struct A每次都要多写了一个struct有好处吗?如果有好处的话,是什么好处呢?
[解决办法]
因为linux内核中,很少用typedef去对struct进行重命名。

为什么呢?在我看来,是两个原因
1. typedef本身是用来定义类型别名的,而不是为了简化struct的使用的;
2. 不是用typedef,虽然每次要多打一个struct,但是代码非常明确;
[解决办法]
当需要抽象的时候,用typedef比较好,即关注一个抽象的类型,而不是在意这个类型是基于struct或者什么来的。

[解决办法]
匈牙利命名好还是单纯的骆驼式命名好?每次都要说类型,吃饱撑着。
[解决办法]

引用:
引用:当需要抽象的时候,用typedef比较好,即关注一个抽象的类型,而不是在意这个类型是基于struct或者什么来的。但这样看接口结构时就要多一步跳转了,抽象了也没太大意义啊,感觉。


那是因为你不懂抽象的意义。
[解决办法]
内核风格是:

typedef struct xxx_struct xxx_t;

struct xxx_struct {
};

我的风格是:

typedef struct xxx_st *xxx_t;
struct xxx_st {
};

你不用typedef也没关系,统一风格就行。
[解决办法]
在C++程序设计语言中对struct是这样说的:
由于与C的早期历史历史接轨的原因,在同一个作用域中,允许一个名字被同时用于一个struct和一个非结构实体。例如,

struct stat{/*....*/};
int stat(char* name, strcut stat *buf);

这样说来,只要你能保证作用域里没有重名,那么直接使用struct对象而不加前辍也是可以的。

热点排行