什么时候应该使用以下语句中的一种而不是另一种?
typedef struct Foo {
int a;
} Bar;和
typedef struct {
int a;
} Bar;并像这样使用它
Bar bar1 = { 5 };我知道第二个是匿名结构,但不确定什么时候应该使用一个而不是另一个。
发布于 2019-02-19 03:58:48
很多人关注的是自引用方面,但避免这样做的另一个原因是,由于C中缺少名称空间,在某些圈子中,为了避免使用完整的typedef struct限定符,而是引用带有完整说明符(例如void foo(struct Foo* foo_ptr))的结构,而不使用,这是标准的做法。因此,如果你想保持这样的风格,你就不能选择滥用匿名结构,所以这是:
typedef struct {
int a;
} Bar;
Bar bar1 = {5};应该始终是
struct Bar{
int a;
};
struct Bar bar1 = {5};否则,如果不去掉struct限定符,您甚至无法编译bar1的实例化
https://stackoverflow.com/questions/54752861
复制相似问题