为什么linux kernel喜欢这样写

最近在看linux kernel源码的时候,发现linux kernel喜欢在每个函数体语句块的开头先声明好函数要使用到的变量,就算该变量仅仅是用于for循环。

比如说,大部分同学写for循环可能是这j样的:

1
2
3
void func(void) {
for (int i = 0; i < 1000; i++) {}
}

但是linux kernel就会这样写:

1
2
3
4
void func(void) {
int i;
for (i = 0; i < 1000; i++) {}
}

why?有没有同学很好奇嘞

查了一下才知道,原来C89标准还不支持在for循环内声明变量的语法,这个语法是在C99标准才加入的。

而linux kernel为了兼容C89,能在一些不支持C89编译器上编译,所以才喜欢这样(很大的原因我觉得,毕竟linux真的兼容性超强)。

当然这里我觉得还有一些其他好处,比如说代码一致性,这样可以很方便看出每个函数都会用到哪些局部变量,更容易阅读代码。

还有吗?待补充(doge


为什么linux kernel喜欢这样写
http://example.com/2025/01/08/为什么linux-kernel喜欢这样写/
作者
凌云行者
发布于
2025年1月8日
许可协议