问题
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?
回答1:
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.
回答2:
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.
来源:https://stackoverflow.com/questions/1186072/naming-scheme-for-typedefs