c - 如何重新设置 C 代码的样式以从 if 语句条件中排除赋值

标签 c linux linux-kernel coding-style kernel

我倾向于通过 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/

相关文章:

c - C 中 2 字节短到 2 字节字符串?

c - 如何将 unsigned char 打印为 ascii

写入文件时的C格式字符串

linux - 无法弄清楚 cron 电子邮件的去向

php - 从 php 启动一个独立进程(通过 httpd)

Linux内核中断处理程序互斥保护?

c - 大小 1 的读取无效

linux - 通过shell脚本将参数添加到conf文件中

linux - 未找到 unistd_32.h 和 syscall_table_32.h

linux-kernel - NS3 bash : ./waf:没有这样的文件或目录错误