简短问题
在C中使用structs
和enums
的typedef是否有合适或首选的方法?
背景
我一直在开发一个代码库,有几个人/公司在开发它,我遇到了typedefs
的不同实现。根据Wikipedia他们似乎都有相同的功能。我想我是想弄清楚他们之间是否有微妙的差异或分歧。同样的用法和问题也适用于typedef
ing anenum
。
// I tend to use this if I need to create an
// alias outside the defining module.
typedef struct obj obj_t;
struct obj
{
UINT8 val;
};
// I started to use this format to alias objects
// within the same module (both private and
// public definitons). This is also how
// several colleagues use them.
typedef struct obj_t
{
UINT8 val;
}obj_t;
// This is how I now typically format the aliases
// for both public and private definitions.
typedef struct
{
UINT8 val;
}obj_t;
// I just ran into this one. While makes sense
// how it works, it wasn't inherently better or
// worse then the formats above. Note the different
// container names.
typedef struct obj_t
{
UINT8 val;
}obj;
最佳答案
它们基本上都是相同的,因为它们都将obj_t
定义为结构的类型别名。
不同的是,当您定义结构的名称(例如struct obj ...
)时,您还可以使用struct obj myStructure;
如果您想引用它自身内部的结构(例如创建链接列表时),这是必需的如果在实际结构之前执行typedef
(如在第一个示例中),那么当然也可以在结构内部使用typedef的名称。
关于c - C语言中正确的typedef语法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16540607/