0

我的 C 源代码有许多未初始化的变量。该代码在 RHEL 6.4 操作系统上。

有没有办法找到所有未初始化的变量?

4

2 回答 2

10

在数学意义上,找到所有这些是不可能的(至少没有误报)。但是,有一些工具可以帮助找到其中的一些:

  • 打开编译器警告。使用gcc, 这将是-Wuninitialized,-Winit-self-Wmaybe-uninitialized。请注意,您需要尝试不同级别的优化;您会在不同-O级别收到不同的警告。请注意-Wmaybe-uninitialized(顾名思义)可能会产生误报。
  • 对于未初始化的内存(如malloc等),您可以使用valgrind. 这实际上需要运行程序。
  • 夹板等静态检查器。(感谢安迪莱斯特的这个建议。)
于 2013-10-21T17:42:15.173 回答
7

假设您使用的是 GCC,请使用 -Wuninitialized 编译您的程序。最好总是使用 -Wall 进行编译,因为使用 C 的程序员需要他能得到的所有帮助。

于 2013-10-21T17:37:01.430 回答