Language agnostic 我应该担心未使用的变量吗? 我在C++的大型代码库中工作,总共大约有800万行代码。在我的应用程序中,我看到了数千个未使用的变量,这些变量由g++报告,但被我的团队忽略。我想主动清理这些变量,但在处理这个问题之前我需要一些信息

Language agnostic 我应该担心未使用的变量吗? 我在C++的大型代码库中工作,总共大约有800万行代码。在我的应用程序中,我看到了数千个未使用的变量,这些变量由g++报告,但被我的团队忽略。我想主动清理这些变量,但在处理这个问题之前我需要一些信息,language-agnostic,Language Agnostic,拥有数千个未使用的变量会有任何问题或缺点吗 默认情况下,编译器将此视为忽略的警告,但我认为我们应该将警告视为错误。如果我们忽视这一警告,是否会发生灾难 我们应该努力纠正这个问题,还是只是白费力气?如果在启用优化的情况下编译,编译器很可能只是删除变量,就像它们不存在一样。如果您不使用优化,那么您的程序将在不使用优化的情况下为变量占用额外的存储空间 最好先不声明变量,然后不使用它们,因为它们可能会占用空间,更重要的是,它们会使代码变得杂乱无章,从而降低可读性 例如,如果您有1000个未使用的整数,并

拥有数千个未使用的变量会有任何问题或缺点吗

默认情况下,编译器将此视为忽略的警告,但我认为我们应该将警告视为错误。如果我们忽视这一警告,是否会发生灾难


我们应该努力纠正这个问题,还是只是白费力气?

如果在启用优化的情况下编译,编译器很可能只是删除变量,就像它们不存在一样。如果您不使用优化,那么您的程序将在不使用优化的情况下为变量占用额外的存储空间

最好先不声明变量,然后不使用它们,因为它们可能会占用空间,更重要的是,它们会使代码变得杂乱无章,从而降低可读性

例如,如果您有1000个未使用的整数,并且平台上的整数长度为32位,那么在关闭优化的情况下,您将总共使用4K额外的堆栈空间


如果未使用的变量不是参数,那么应该没有什么可以阻止您删除它们,因为没有什么可以破坏。您将获得可读性,并且能够看到编译器可能产生的其他更严重的警告。

未使用的变量仍在内存中分配。删除它们将释放内存。

假设您的变量是诸如int、float等POD类型,它们不太可能对性能产生影响。但它们对代码质量有着巨大的影响。我建议您在更新代码以添加新功能时,在运行过程中删除未使用的变量。您必须使用版本控制软件才能安全地执行此操作


这是一个常见的问题。作为一名顾问,我曾经查看过一个大型FORTRAN代码库,其中包含数百个未使用的变量。当我问写这篇文章的团队他们为什么会在那里时,他们的回答是“好吧,我们将来可能需要它们…”

如果启用了优化,情况可能就不是这样了。因为其他答案不符合同样的要求?是的,但一般来说,您只会在编译时没有对调试版本进行优化,其中大小通常会膨胀(调试符号等)。1000个未使用的INT不会对您所做的任何事情产生任何影响。。。即使您为内存有限的设备进行编译,除非内存非常有限,并且您真的没有出于任何原因使用优化,否则几KB或内存也不会有什么不同。最大的区别在于代码的可读性和质量,当然,代码质量是解决这个问题的主要原因。有这么多的警告往往会导致人们错过其他更重要的警告。他们在噪音中迷了路。如果无法修复它们,则应在编译器允许关闭单个警告的情况下关闭它们。如果做不到这一点,请找到一种方法将它们过滤掉,这样您就不会错过“分配前可能会使用变量”这一关键警告,这将为您以后节省数小时的调试时间。@andrewski:的确如此。但是我认为OP更质疑的是,为什么编译器一开始就懒得警告未使用的变量。1。这不是一个C++特定的问题。其他语言也可以有未使用的变量。2.提示:StackOverflow不是一个论坛。你不需要问“有人知道答案吗”——直接问就行了。如果有人知道答案,他们会回答的+1.