Naming scheme for typedefs

冷暖自知 提交于 2019-12-17 16:30:52

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!