Typedef在结构和枚举上带有或不带有类型名,每种类型的优点/缺点是什么,最佳实践是什么?

问题描述 投票:0回答:1

关于如何以及为什么在C中使用typedef包含在SO上的众多问题中,但是似乎没有人描述应该使用哪个用例,或者每个用例的pro / cons。

有关该主题的大多数问题都围绕此问题

struct Bar {
    int value;
};

struct Foo {
    int value;
};
typedef struct Foo Foo;

struct Bar mybar; // Have to add keyword struct for it to work
Foo myfoo;        // Works without struct keyword

我的问题是最好的做法是什么,或者如果由于上下文而没有一个或多个,那么这两者之间的利弊是什么?>

// 1
typedef struct {
    int value;
} Foo;
// 2
typedef struct Foo {
    int value;
} Foo;
// 3
typedef struct Foo_s {
    int value;
} Foo_t;
// 4
typedef struct Foo {
    int value;
} Foo_t;

应该避免其中任何一种,为什么?如果这些都不是很好,那么相同的确切点对枚举有效吗?我觉得整个主题有点含糊,我至少没有发现关于此问题的任何明确信息,所以我只是仔细检查一下,以便以后没有任何东西再次咬住我。

如果有其他变体,我可以添加它们。

关于如何以及为什么在C中使用typedef包含在SO上的许多问题中,但是似乎没有人描述应该使用哪个用例,或者每个用例的pro / cons。关于...

c struct enums typedef c99
1个回答
0
投票

为了快速阅读和滥用不同名称,我想推荐这种形式:

© www.soinside.com 2019 - 2024. All rights reserved.