gpt4 book ai didi

c - 为什么要用大括号将 C 代码块括起来?

转载 作者:太空宇宙 更新时间:2023-11-04 04:42:26 25 4
gpt4 key购买 nike

我正在查看一些 C 代码,并注意到它充满了这些没有任何控制结构的代码块周围的大括号。看一看:

//do some stuff . . .
fprintf(stderr, "%.2f sec\n", (float)(clock() - t) / CLOCKS_PER_SEC);
{
//a block! why not?
char *tmp_argv[3];
tmp_argv[0] = argv[0]; tmp_argv[1] = str; tmp_argv[2] = prefix;
t = clock();
fprintf(stderr, "[bwa_index] Convert nucleotide PAC to color PAC... ");
bwa_pac2cspac(3, tmp_argv);
fprintf(stderr, "%.2f sec\n", (float)(clock() - t) / CLOCKS_PER_SEC);
}

为什么要在代码中插入这样的 block ?里面塞满了它们。有某种性能优势吗?一些神秘的 C 东西?为什么???

编辑:此代码来自 BWA ,一个生物信息学程序,使用 Burrows-Wheeler transform 将小序列与大引用序列进行比对,以防你们中的任何人想知道。此代码示例与应用程序的功能不是特别相关。

最佳答案

遗留代码需要 { } 才能进行声明

在 C89 中,您不能在任何地方只执行 int i;;声明仅在 block 的开头有效。

所以:

a = 1;
int i; /* error */
i = 2;

...无效,但是

a = 1
if (e) {
int i;

...很好,就像一个普通的 block 一样。

即使在声明生效后(C99)block-item(s),最终的风格仍在继续,部分是由于惯性,部分是为了向后可移植性,还因为为新的对象建立一个范围是有意义的声明。

关于c - 为什么要用大括号将 C 代码块括起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24955832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com