在C中可以缩小变量范围时的gcc警告标志

在C中可以缩小变量范围时的gcc警告标志,c,gcc,scope,static-code-analysis,C,Gcc,Scope,Static Code Analysis,在编写C源代码时,作为“良好实践”的一部分,我试图尽可能减少变量范围 一些外部工具,如cppcheck,可以提供帮助,并在范围变量大于需要时提供警告 我还没有为gcc找到一个等效的警告标志,但可用标志的列表是出了名的庞大和不断变化的,因此很难掌握所有这些标志。我可能只是错过了 是否存在这样的标志?编译器不是静态分析器。虽然gcc和clang已经有了非常好的警告,但它们的主要目标是最常见的错误,在这些错误中,尽早(即在正常编译期间)获得警告非常有帮助。然而,有很多情况下编译器不进行检查,因为这会增

在编写C源代码时,作为“良好实践”的一部分,我试图尽可能减少变量范围

一些外部工具,如
cppcheck
,可以提供帮助,并在范围变量大于需要时提供警告

我还没有为
gcc
找到一个等效的警告标志,但可用标志的列表是出了名的庞大和不断变化的,因此很难掌握所有这些标志。我可能只是错过了


是否存在这样的标志?

编译器不是静态分析器。虽然gcc和clang已经有了非常好的警告,但它们的主要目标是最常见的错误,在这些错误中,尽早(即在正常编译期间)获得警告非常有帮助。然而,有很多情况下编译器不进行检查,因为这会增加大量的编译时间,用当前的编译器逻辑很难实现(例如,不可访问的代码警告曾经是一件事,但现在已经不存在了),或者进行这种检查需要付出相当大的努力,而不是改进其他事情。定期使用不同的分析仪。当然。我的思路或推理是gcc已经有了
-Wshadow
,这是关于重叠范围的。因此,它已经正确地分析了变量的作用域。这当然不能证明存在优化变量作用域的选项,但值得检查。编译器必须知道如何使用正确的变量,所以此警告在it实现工作和执行时间上都非常便宜。检查范围缩减是完全不同的任务。所以简单的回答是-我不知道,我不认为你会在任何编译器中找到它。您可以检查
clang--analyze
,但这是编译之外的一个单独过程,我认为它也不会检查作用域。我不确定最小化变量作用域是否会使代码更具可读性。您的方法建议使用更多的块,有时这并不能提高可读性。然而,您可以为此目的编写一个GCC插件(可能使用…),这个问题的最初想法是利用现有的作用域,当变量完全适合较低、更受限的作用域时,减少变量的作用域。创建其他作用域将是一个单独的问题。谢谢你的链接