Naming scheme for typedefs

2019-01-15 02:04发布

I'm working on a library that extensively used constructs like

typedef struct foo_bar_s {
    ...
} foo_bar_t;

It's a bad idea to use the _t suffix, because it's a POSIX reserved namespace. The _s suffix for structs is also pretty useless. So I thought I can change it all to

typedef struct foo_bar {
    ...
} foo_bar;

or if the struct name is not needed

typedef struct {
    ...
} foo_bar;

However, I cannot distinguish typedefs from regular symbols (variables, etc.) anymore. Is this really such a big deal and should I use a different suitable naming scheme for the typedefs? Or does it not matter that much?

I'm really not so sure. What do you think? Also, what recommendations do you have for typedef naming schemes?

2条回答
欢心
2楼-- · 2019-01-15 02:23

I use the naming conventions used in Dave Hanson's C Interfaces and Implementations: a type is named with the module name and a capital T. So for example, the type of sequences is Seq_T, and the type of hash tables is Table_T. Within the implementation of a module Hanson uses #define to abbreviate just to T. This is basically Modula-3 conventions applied to C programming, but I find that after a brief initial shock it works well.

查看更多
可以哭但决不认输i
3楼-- · 2019-01-15 02:40

Although, "_t" is reserved, it is very unlikely that you will encounter a problem. However, this convention is a remnant of older versions of C where this syntax was required in order to name structs, and so nowadays you can simply write something like the following (omitting the typedef and the typedef names):

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

And yes, you can use single line comments ("//...") in the current standard of C.

查看更多
登录 后发表回答