2011-05-03 51 views
3

我有一個正在使用g ++構建的應用程序。我添加了-Wall到編譯標誌來清理任何問題;未使用的變量,變量之前使用引用,比較有符號/無符號值等C++備註:操作數以未指定的順序進行評估

的問題是,我得到數百個垃圾評論的行指出:

remark #981: operands are evaluated in unspecified order

是什麼這句話的真正含義?我該如何擺脫它,以便看到有價值的警告/評論?

感謝您的幫助!

+2

您可以發佈(如在複製粘貼中)您獲得該評論的一些代碼行嗎?沒有看到代碼通常很難說出什麼是診斷手段。 (你對Prasoon Saurav的問題的評論沒有用,因爲你聲稱你的代碼行就像你引用的東西,而編譯器可能會以不同的方式處理兩個與你相似的代碼。) – 2011-05-03 18:02:35

+0

所有的語句都與示例I張貼在評論中,總是使用round或abs簽署ints或簽名shorts,並總是添加。有時,結果不會被存儲,而是通過值傳遞給函數。我記得在工作時使用了英特爾編譯器,並且有一種方法可以通過編號抑制警告(如#981),g ++似乎沒有這個功能,所以我正在尋找解決方法。一般來說,這涉及到修復代碼更好,但在這種情況下,這似乎是大量浪費的工作。 – steveo225 2011-05-03 18:12:12

+0

這不是'g ++'警告消息,這是'icc'警告消息。英特爾自己的人說這是沒用的,在這裏:http://software.intel.com/en-us/forums/showpost.php?p=72053 – Cubbi 2011-05-03 18:24:10

回答

0

實際上它在標準中沒有指定,但應該與系統編程一致。一些編譯器[在評估之前使用波蘭語符號轉換]使用優先級,一些編譯器[在評估之前使用樹轉換]以嚴格的從右到左的順序對它們進行評估。