typedef的命名方案

时间:2009-07-27 01:32:39

标签: c posix naming typedef

我正在开发一个广泛使用

等结构的库
typedef struct foo_bar_s {
    ...
} foo_bar_t;

使用_t后缀是个坏主意,因为它是POSIX保留的命名空间。结构的_s后缀也很无用。所以我想我可以把它改成

typedef struct foo_bar {
    ...
} foo_bar;

或者如果不需要结构名称

typedef struct {
    ...
} foo_bar;

但是,我无法再将typedef与常规符号(变量等)区分开来。这真的是一个大问题,我应该为typedef使用不同的合适命名方案吗?或者这不重要吗?

我真的不太确定。你怎么看?另外,您对typedef命名方案有什么建议?

2 个答案:

答案 0 :(得分:8)

虽然“_t”是保留的,但您不太可能遇到问题。但是,这个约定是旧版本C的残余,其中为了命名结构需要这种语法,所以现在你可以简单地写下面的内容(省略typedef和typedef名称):

struct name_of_struct
{
   type1 member1;
   type2 member2;
   // ...
   typeN memberN;
};

是的,您可以在当前的C标准中使用单行注释(“// ...”)。

答案 1 :(得分:5)

我使用Dave Hanson的C Interfaces and Implementations中使用的命名约定:一个类型以模块名称和大写字母T命名。例如,序列的类型是Seq_T,并且类型为哈希表是Table_T。在模块的实现中,Hanson使用#define缩写为T。这基本上是应用于C编程的Modula-3约定,但我发现在短暂的初始冲击之后它运行良好。