Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在何处格式化/放置“文件”;{quot;在C中?_C_Coding Style - Fatal编程技术网

在何处格式化/放置“文件”;{quot;在C中?

在何处格式化/放置“文件”;{quot;在C中?,c,coding-style,C,Coding Style,有人能解释一下为什么在这里: void st_clear(st_table *table) { //1 a new line register st_table_entry *ptr, *next; st_index_t i; if (table->entries_packed) { //2 the same line table->num_entries = 0; table->real_entries = 0;

有人能解释一下为什么在这里:

void
st_clear(st_table *table)
{ //1 a new line
    register st_table_entry *ptr, *next;
    st_index_t i;

    if (table->entries_packed) { //2 the same line
        table->num_entries = 0;
        table->real_entries = 0;
        return;
    }

    for (i = 0; i < table->num_bins; i++) {
      ptr = table->bins[i];
      table->bins[i] = 0;
      while (ptr != 0) {
        next = ptr->next;
        st_free_entry(ptr);
        ptr = next;
      }
    }
    table->num_entries = 0;
    table->head = 0;
    table->tail = 0;
}
void
st_清除(st_表*表)
{//1新行
注册st_table_条目*ptr,*next;
st_指数;
如果(表->条目的压缩){//2同一行
table->num\u条目数=0;
表->实项目=0;
回来
}
对于(i=0;inum\u bins;i++){
ptr=表格->箱子[i];
表->料仓[i]=0;
while(ptr!=0){
next=ptr->next;
免费入场(ptr);
ptr=下一个;
}
}
table->num\u条目数=0;
表->头=0;
表->尾=0;
}
在一种情况下,他们离开了同一行的
{
,而在另一种情况下,他们把它放到了新行


我知道在C语言中没有像大多数其他语言那样的明确命名约定,但是
{
在一个项目中始终必须放在新行或同一行。

在C标准本身中,没有强制要求放置令牌,只要它们的顺序正确。事实上:

i

     = j

++;
就语法而言,它完全可以,尽管它的格式非常难看:

i = j++;
话虽如此,你应该尽可能地坚持你的指导方针。在这种情况下,我们实际上不知道指导方针是什么


指南完全有可能规定函数和非函数的大括号位置不同。

正如您所指出的,这是完全有效的,并且确实是许多常见缩进样式的一部分,例如K&R样式(Wikipedia有一些流行样式)

在这种情况下,如果没有该代码遵循的编码风格指南(有一些基本原理),很难回答为什么要这样做,但一个优点是,当且仅当有行匹配时才有一个函数定义,因此可以很容易地找到它们。(函数不嵌套在标准C中,因此
{
始终位于第一列,并且(显然)在这种编码样式约定中,
{
位于第一列的任何其他构造都不存在。)

正如上面链接的维基百科文章所提到的,旧式的定义可能是该公约流行的另一个(尽管是历史性的)原因


引入函数定义的
{
不同于复合语句开头的其他大括号,因为它是必需的(函数体是复合语句不能被其他语句替换的唯一情况,
int foo(void)return 5;
,例如,无效)这可能在某种程度上是不一致的(如果你认为是这样),在不同的情况下放置其他的括号。

这完全是风格化的。“T.C.,我知道。但是必须有一致性。”在一个项目中,无论是在新行上还是在同一行上。--不,它不关心。编译器不关心。人类可能关心,但显然他们不关心。@JeffreyBosboom,没有人说编译器关心。“总是”听起来像是一个要求。这是-函数括号在新行上,其他在同一行上。