有时我只是对C中的语法感到困惑。在struct中,所有内容都用分号分隔,并且在最后一个成员之后有一个额外的分号,而在枚举中,所有内容都用逗号分隔,没有额外的逗号最后。我总是忘记struct中的最后一个分号,因为它对我来说似乎没有意义。设计它有什么好的理由吗?我希望有人可以指出它为什么好,以便我可以习惯它,现在它使语法很难记住。
答案 0 :(得分:3)
记住这个最简单的方法也许是结构和联合基本上是嵌套的范围。它们包含声明,谎言函数或“根”文档(在全局范围内)。
因此,您声明了struct members:
struct {
int member_a;
int member_b;
} ;
有点像你声明全局变量或函数成员:
/* START OF FILE */
int global_a;
int global_b;
/* END OF FILE */
枚举是列表 - 类似于数组声明,或多个变量等......:
int arr[] = {1, 2, 3}; //* see note below
enum Foo { FOO, BAR, BAZ };
int foo, bar, baz;
// multiple "sub-statements" in one statement
// note that this is generally considered bad practice.
foo++, bar++, baz = bar;
或者你可以这样简单地记住它:分号是语句终结符(它们结束语句),而逗号是分隔符(它们来自 >元素)。
( * note:数组是一个例外,因为它们可选地允许使用尾随逗号。至于为什么他们在数组中允许它而不允许它用于枚举是超出我的)
答案 1 :(得分:2)
在C: