我遇到了一些代码,其中包含几个代码块,用花括号 {}
描述。在代码块之前没有一行将它们标记为 if
语句、函数定义或其他任何内容的一部分。只是一个漂浮在函数中间的代码块。这有什么意义吗? gcc
似乎很高兴通过代码;我只能想象这是一种允许原始编码人员在视觉上分割功能 block 的方法......
最佳答案
它创建了一个范围。 block 内是否定义了自动变量?如果是这样,那么这些变量的范围仅限于 block 。它对于您不想污染函数其余部分的临时变量很有用,并且在编写 C89 时也很有用,其中变量定义必须位于 block 的开头。
所以,而不是:
int main() {
int a = 0;
int b;
int i;
for (i = 1; i < 10; ++i) {
a += i;
}
b = a * a;
// do something with a and b
}
你可以:
int main() {
int a = 0;
{
int i;
for (i = 1; i < 10; ++i) {
a += i;
}
}
{
int b = a * a;
// do something with a and b
}
}
显然,如果您这样做,您还必须问自己,这些 block 作为单独的函数是否会更好。
https://stackoverflow.com/questions/3636576/