[英]Repository of buggy compiler versions for C++11 support
我有一個C ++軟件,可以使用不同的操作系統,平台和編譯器進行編譯。 現在有時編譯器會出現錯誤,例如這個錯誤,這意味着gcc版本4.6.4之前和4.7.3之前是不行的。 現在我可以包含一個顯示錯誤的單元測試(也許這個問題將揭示確實這就是我應該做的事情),但這是一項繁瑣的工作:編譯器錯誤有時難以重現並且將其轉換為單元測試可能不會很容易......當你手頭有平台和編譯器時就是這樣。
我正在尋找的是一個存儲庫,告訴我哪些版本的g ++,clang ++和msvc ++遭受了支持C ++ 11的致命錯誤(我不是在談論缺少的功能,當功能不存在時我會解決它們) 。 在構建系統中使用它們構建時,我會致命崩潰。 不錯的功能是,我甚至沒有被迫發現一個禁止編譯器的bug(所以我為自己節省了未來的麻煩)。
這樣的清單是否存在?
這可能不是您正在尋找的答案,但我相信處理這個問題的正確方法是使用白名單,而不是黑名單。 換句話說,有一個你知道可以工作的編譯器列表,如果客戶嘗試使用與你測試過的版本不同的版本進行構建,你會發出一條警告消息,作為構建腳本的一部分,說明如下:
不支持此編譯器,請參閱http://www.example.com/list_of_supported_compilers.html以獲取我們支持的編譯器列表。 如果您選擇繼續使用此編譯器,請隨意執行此操作,但如果您發現問題,請不要期望我們的技術支持提供全面支持。
我說這個的原因是:
任何足夠大的軟件(或硬件)產品都會有錯誤。 您只能通過測試來證明您的軟件是有效的。 依賴於外部“版本中存在已知的錯誤,例如編譯器X”將無法幫助您避免影響代碼的錯誤。 話雖如此,大多數編譯器都經過了相當好的測試,因此您(通常)需要做一些相當不尋常/復雜的事情來使編譯器失敗。
調查Boost.Config ,特別是頭文件<boost/config.hpp>
。
這包括一大堆宏,用於各種編譯器(以及它們的不同版本),它們指示哪些C ++功能已啟用,已損壞等。它還包括一個全面的測試套件,可用於測試任何新編譯器的缺失功能等等
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.