0

私の C ソース コードには、初期化されていない変数が多数含まれています。コードは RHEL 6.4 オペレーティング システム上にあります。

初期化されていない変数をすべて見つける方法はありますか?

4

2 に答える 2

10

それらすべてを見つけることは、数学的な意味で (少なくとも誤検出がなければ) 不可能です。ただし、それらのいくつかを見つけるのに役立つツールがいくつかあります。

  • コンパイラの警告をオンにします。の場合、これgcc-Wuninitialized-Winit-self、および になり-Wmaybe-uninitializedます。さまざまなレベルの最適化でこれを試す必要があることに注意してください。さまざまなレベルでさまざまな警告が表示され-Oます。-Wmaybe-uninitialized(名前が示すように)誤検知を与える可能性があることに注意してください。
  • 初期化されていないメモリ (mallocなど) については、 を使用できますvalgrind。これには、実際にプログラムを実行する必要があります。
  • スプリントなどの静的チェッカー。(この提案をしてくれたAndy Lesterに感謝します。)
于 2013-10-21T17:42:15.173 に答える
7

GCC を使用していると仮定して、プログラムを -Wuninitialized でコンパイルします。常に -Wall を指定してコンパイルする方がよいでしょう。なぜなら、C を使用するプログラマーは、得られるすべての支援を必要とするからです。

于 2013-10-21T17:37:01.430 に答える