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命名方案有什么建议?

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

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

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

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