[問題] GPGPU-sim 中 option_parser.cc

看板C_and_CPP作者 (^____^)時間6年前 (2017/10/22 23:20), 6年前編輯推噓1(103)
留言4則, 2人參與, 6年前最新討論串1/1
開發平台(Platform): (Ex: Win10, Linux, ...) ubuntu 14.04 ubuntu 16.04 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) g++ 4.8.4 (ubuntu 14.04) g++ 4.8.5 (ubuntu 16.04) 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 建立GPGPU-sim 所用到的函式庫 問題(Question): 一段可能是問題的 code virtual bool fromString(const string str) { stringstream ss(str); ss.exceptions(stringstream::failbit | stringstream::badbit); ss << setbase(10); if (str.size() > 1 && str[0] == '0') { if (str.size() > 2 && str[1] == 'x') { ss.ignore(2); ss << setbase(16); } else { ss.ignore(1); ss << setbase(8); } } try { ss >> m_variable; } catch (stringstream::failure &e) { return false; } m_isParsed = true; return true; } 在 ubuntu 14.04 (g++ 4.8.4) 系統中 紅色字串是不會丟出錯誤訊息的 但是在新的系統中 ubuntu 16.04 (g++ 4.8.5) 中 紅色字串丟出錯誤訊息 比較了兩個系統中的 failbit 與 badbit 值都是 4 與 1 直接呼叫函式 ss.fail() 與 ss.bad() 都是 false 想要問的問題是 1. 這是因為g++ 改版後,修正的錯誤嗎? 2. 但是直接拿stringstream::failbit 跟呼叫ss.fail() 所出來的結果不同? 一個有錯誤,一個沒有錯誤,是因為我判斷錯地方,還是哪裡沒注意到? 3. 還是說之前的code 就有錯誤,只是到紅色字串才把錯誤丟出來? 我對c++ 不熟,請大家多多見諒 因為給的不是完整的code,如果需要其他資訊也可以繼續補上 或者就給個大概的方向,我再去追看看 餵入的資料(Input): 已在上敘述 預期的正確結果(Expected Output): 已在上敘述 錯誤結果(Wrong Output): 已在上敘述 程式碼(Code):(請善用置底文網頁, 記得排版) 已在上敘述 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.117.172.56 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1508685623.A.600.html ※ 編輯: hakman (140.117.172.56), 10/22/2017 23:28:58

10/23 00:23, 6年前 , 1F
.exceptions() 是設定什麼時候丟例外的旗標
10/23 00:23, 1F

10/23 00:23, 6年前 , 2F
.fail() 跟 .bad() 則是去查這些狀況是不是已經發生
10/23 00:23, 2F

10/23 00:24, 6年前 , 3F
前者是事前設定, 後者是事後查詢, 兩者用途不同
10/23 00:24, 3F

10/23 00:46, 6年前 , 4F
感謝,我應該完全搞錯了 Orz
10/23 00:46, 4F
文章代碼(AID): #1PxBStO0 (C_and_CPP)