所以我的问题是多方面的。
为了理解 C(不是 C++)我相信下面的代码:
struct Foo { int bar; };
创建一个我可以使用的自定义类型,但这样做也是如此:
typedef Foo { int bar; };
我看到的唯一区别是我是否必须在 Foo 类型的变量前使用“struct”关键字。导致这种行为的差异是什么?
最佳答案
区别在于:
struct Foo { int bar; };
创建结构类型{ int bar; }
命名为 Foo。 IE。完整的类型名称是 struct Foo
。
typedef Foo { int bar; };
为未命名的结构类型 创建别名
Foo
{ int bar; }
但是我不确定您的语法对于严格的 C 语言是否完全正确,但不知何故它对您的编译器来说没问题。或者它创建了一些不同的东西,但偶然它起作用了,C 语法可能非常棘手。无论如何,第二个陈述应该是:
typedef struct { int bar; } Foo;
进一步引用you can use this .
关于C 结构与 typedef 结构问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6936693/