我倾向于通过 Linux 内核黑客来编写代码,主要是做清洁补丁。最近我遇到了一些不寻常的 if 语句,这些语句在语句的条件部分内包含变量赋值。
if (!strcmp(filename, "-"))
cpio_list = stdin;
else if (!(cpio_list = fopen(filename,"r"))) {
...
...
}
checkpatch.pl 将其称为样式错误。我会(我可以吗?)以什么方式重构这段代码而不破坏它?
文件:linux/usr/gen_init_cpio.c
最佳答案
拆分 else if
,这样您就可以在 if
之前进行赋值。
if (!strcmp(filename, "-"))
cpio_list = stdin;
else {
cpio_list = fopen(filename,"r")
if (!cpio_list) {
...
...
}
}
但是您可能想要重构一个函数,以便您可以在 else
之前return
。
就我个人而言,我认为偶尔在 if 条件下赋值没什么大不了的,只要它被括起来(这意味着程序员是认真的,它很明显,并且抑制了编译器警告) .
关于c - 如何重新设置 C 代码的样式以从 if 语句条件中排除赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29911699/