2012-04-29 120 views
1

我希望gcc做錯誤的源代碼分析,但不要寫任何輸出文件(類似於什麼夾板)。 我發現這個解決方案目前:gcc打印警告沒有編譯

gcc -Wall -c source.c > NUL 

回答

2

嗯,你可以將輸出重定向到/dev/null

gcc -o /dev/null ... 
5

-fsyntax-only選項,這意味着你想要什麼:

「檢查代碼中的語法錯誤,但不要做任何超出此範圍的事情。」

這個選項在操作系統之間比使用/dev/nullNUL作爲輸出更容易移植。

此選項也支持clng C/C++/ObjC前端,它與LLVM一起使用:clang-3.1 -fsyntax-only

更新:但您應該知道,某些警告不是由語法分析器生成的,而是由內部編譯器階段生成的。例如,語法分析器無法檢測到完全控制流(僅優化器會),並且在「-fsyntax-only」選項中不會生成「控制到達非空函數結束」等警告。

+0

這樣就會打印出大量無用的警告:「鏈接器輸入文件未使用,因爲鏈接未完成」 – eadmaster

+0

實際上,如果使用正確(僅將fsyntax僅用於CFLAGS,而不用於LDFLAGS),它將不會打印此內容。但我只注意到-fsyntax-only只會比'-c'提供更少的警告(在我的情況下 - 「控制達到非void函數的末尾」) – osgx