C语言中if语句和函数末尾的分号

cod*_*ear 19 c

我刚刚遇到了一些过度使用分号的代码,或者使用分号用于我不知道的不同目的.

我在if语句的末尾和函数的末尾发现了分号.例如:

int main (int argc, char * argv[]) {
    // some code

    if (x == NULL) {
        // some code
    };  <-----

    // more code

    return 0;
}; <---
Run Code Online (Sandbox Code Playgroud)

它用cc编译,而不是gcc.那些分号做了什么?我假设没有区别,因为编译器只会将其视为空语句.

Jon*_*eet 33

他们什么都不做.我怀疑,他们是一个非常不懂语言的人的标志.

如果这是源代码,你理所当然地"拥有",我会删除代码,并尝试与编写它的人轻轻聊天.

  • 我们曾经看过很多年前我们有一个程序员团队从Turbo Pascal转移到C.在Pascal中,在大多数情况下你需要在'End'之后使用分号,并且程序员错误地将半与他们结肠.一旦习惯形成,它就会坚持下去. (5认同)

Fra*_*cis 7

这是虚拟状态.你的样本与之相同

if (x == NULL) {
 // some code
 do_something_here();
}

/* empty (dummy statement) here */ ;

// more code
some_other_code_here();
Run Code Online (Sandbox Code Playgroud)


Jor*_*jon 5

你是对的,编译器认为它们是空语句.它们不是必需的,我想程序员不知何故认为它们是.