我正在开发一个广泛使用
等结构的库typedef struct foo_bar_s {
...
} foo_bar_t;
使用_t后缀是个坏主意,因为它是POSIX保留的命名空间。结构的_s后缀也很无用。所以我想我可以把它改成
typedef struct foo_bar {
...
} foo_bar;
或者如果不需要结构名称
typedef struct {
...
} foo_bar;
但是,我无法再将typedef与常规符号(变量等)区分开来。这真的是一个大问题,我应该为typedef使用不同的合适命名方案吗?或者这不重要吗?
我真的不太确定。你怎么看?另外,您对typedef命名方案有什么建议?
答案 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约定,但我发现在短暂的初始冲击之后它运行良好。