我什么时候应该将尾随添加_t到typedef'ed类型?
例如,我应该这样做:
typedef struct image image_t;
Run Code Online (Sandbox Code Playgroud)
或这个:
typedef struct image image;
Run Code Online (Sandbox Code Playgroud)
一般规则是什么?
另一个例子,我应该这样做:
typdef enum { ARRAY_CLOSED, ARRAY_OPEN, ARRAY_HALFOPEN } array_type_t;
Run Code Online (Sandbox Code Playgroud)
或这个:
typdef enum { ARRAY_CLOSED, ARRAY_OPEN, ARRAY_HALFOPEN } array_type;
Run Code Online (Sandbox Code Playgroud)
请赐教.
谢谢,Boda Cydo.
Jam*_*lis 58
在POSIX中,以结尾的名称_t是保留的,因此如果您的目标是POSIX系统(例如,Linux),则不应该使用_t.
Bil*_*eal 17
我个人鄙视这个_t大会.但是,只要你保持一致,那无关紧要.
需要注意的是(其他的答案在这里表示)如果你是编码一些其他的标准,如POSIX,你需要检查它是否使用这些名字之前是该标准还行.
什么时候应该使用_t?决不?它由一个主要标准(POSIX)保留,即使它现在不是,你的代码有一天可能会在POSIX环境中使用,所以使用_t是一个坏主意.
我会进一步说,过度使用typedef一般都很糟糕.如果你的类型是一个struct,union或者enum,当你声明的变量,它使你的代码更加清晰使用这些关键字.typedef当您希望使基础类型对于抽象/封装目的不可见时,最好保留使用.从标准C的一些很好的例子是size_t,int32_t,mbstate_t,和标准输入输出FILE.
一些最严重的侵犯typedef是由Windows API( ,WORD,,DWORD 等)和油嘴(,,等).使用相同的预期用法制作标准C类型的副本只会让人感到困惑,并且会通过使用这些非标准类型名称污染所有代码来锁定开发人员进入您的库/平台.INTLPSTRgintgchar
我使用后缀来提高可读性:_t表示typedef,_e表示枚举自25/30岁...有时候我会在typedef定义结构时使用_st.
我认为让代码可读和标准化是一种很好的做法,然后我发现使用后缀是正确的!此外,到目前为止,我还没有找到任何POSIX官方文档,说明后缀_t是保留的.
旧的stdio.h包含_t ...参见:grep -i"_t;" stdio.h :)我认为POSIX标准比C更"年轻"!
| 归档时间: |
|
| 查看次数: |
12874 次 |
| 最近记录: |