C语言中struct,union和enum的语法

时间:2014-02-23 22:04:11

标签: c syntax

有时我只是对C中的语法感到困惑。在struct中,所有内容都用分号分隔,并且在最后一个成员之后有一个额外的分号,而在枚举中,所有内容都用逗号分隔,没有额外的逗号最后。我总是忘记struct中的最后一个分号,因为它对我来说似乎没有意义。设计它有什么好的理由吗?我希望有人可以指出它为什么好,以便我可以习惯它,现在它使语法很难记住。

2 个答案:

答案 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:

  • 逗号是分隔符。价值之间。示例:enum。
  • 分号是终结符。声明和声明。