尽可能在本地声明变量

dim*_*mba 4 c coding-style linux-kernel

我是Linux内核开发的新手.

困扰我的一件事是声明和初始化变量的方式.

我的印象是代码使用C89/ANSI C的变量声明放置规则(变量在块的开头声明),而C99放宽了规则.

我的背景是C++,很多人建议"非常聪明的人"尽可能在本地声明变量 - 在同一条指令中更好地声明和初始化:

在Linux内核中初始化变量的可接受方法是什么?

pmg*_*pmg 7

我找不到Linux内核编码风格的相关段落.因此,遵循现有代码中使用的约定 - 在块的开头声明变量 - 或者冒着代码看似不合适的风险.

阻止开始时变量是好事的原因:

  • 目标体系结构可能没有C99编译器
  • ...... 想不出更多的理由


Era*_*man 2

您应该始终尝试尽可能在本地声明变量。如果您使用 C++ 或 C99,通常会在第一次使用之前进行。
在较旧的 C 中,这样做并不属于“可能”的范围,并且声明这些变量的位置通常是当前块的开头。

(我说“通常”是因为在某些带有函数和循环的情况下,最好让它们更加全局化......)