簡體   English   中英

警告與優化 gcc

[英]Warnings vs optimization gcc

我想知道編譯器報告的警告(例如變量未使用或控制到達非無效 function 的末尾)是否會在啟用優化(O2 或 O3)時影響程序(即崩潰)

你能給我一些例子嗎?

警告表明您的代碼中可能存在錯誤。 但是,是否存在警告或是否啟用優化並不影響代碼是否正確。

諸如unused variable之類的警告只是表明您可能打算在某處使用該變量但忘記了這樣做。 否則不會有變量存在的理由。

諸如control reaches end of a non-void function警告更為嚴重。 例如,在這種特定情況下,調用具有非 void 返回類型的 function 會導致未定義的行為,如果其執行到達 function 主體的關閉}而不通過之前的return語句返回。

在這種情況下,警告會通知您編譯器檢測到 function 可以使用此結果作為某些輸入的路徑。 這很可能是無意的,因為如果您使用該路徑調用 function,那么您的程序將具有未定義的行為。


當程序具有未定義的行為時,您無法確定它將做什么,因為您的編譯器/平台沒有額外的保證。 它可能在優化時以一種方式運行,而在沒有優化時以不同方式運行。 對於不同的編譯器版本,或者只是在不同的編譯運行甚至程序執行之間,它也可能具有不同的行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM