如何評價 Visual C++ 將整合 Clang 用於開發 Windows 程序?
Solidot | Visual C++ 將整合Clang
微軟在11月釋出的Visual C++更新將整合Clang開源C和C++編譯器,開發者將可以用Clang編譯Windows應用程序。Visual Studio 2015已經整合了Clang編譯器,但它是被用於Android和 iOS上的應用開發,而這一次整合是用之開發Windows程序。
Clang for Win原先有很多很多很多的bug。比如,如果一個類的函數叫func,從dll里導出,會變成__classname...func,而導入的時候,編譯器搜索的名字是_classname...func,查了一個下劃線。這個bug從2011年就有人報告了,2014年才修好,而且修復方式是,在導出的時候強制從第二個字元開始寫入。。。這樣的bug還有3個,修復周期都是3年。
(當年我試圖用Clang編譯KlayGE,為移植到OSX/iOS做準備的時候,踩了好多坑,都試圖自己修Clang提交補丁了。Clang編譯KlayGE的嘗試Clang編譯KlayGE的第二次嘗試。到Clang 3.5才能正式成功,而且必須關閉RTTI。)
接著就聽說vc組和opentech組的人親自衝上去搞Clang,在一個版本內就搞好了。
再後來,vc集成了clang,做android/ios。
總的來說,vc的前端是199x年寫的,到目前基本處於補丁摞補丁的狀態。要兼容C++11/14/17,各種hack都疊上去,有點不可控了。基本屬於要支持一個新特性,就得重寫一大片。學院派這些年來也一直都是用Clang做研究,使得這麼多年來,編譯器技術的發展全都沒有反應到vc前端。結果差距越來越大。
另一方面,其實Clang挺早就搞出來集成入VS的方法了,用個clang-cl的包裝,並且支持MSVCRT。所以這件事情技術上不是很困難,只是做不做而已。
大勢所趨。
IBM編譯器從13.1.2版本開始,就已經是Clang與xlc融合的版本了,目前最新版本是13.1.3。
=================Update================================看了鏈接的內容,微軟的Visual C++編譯器走的是把Clang的LLVM IR轉換為自己的中間語言的道路,然後利用自己的後端C2,我應該已經知道微軟怎麼來實現這個東西了。終於有C++編譯器用了,不用再忍受那個C艹編譯器了。
我很想知道clang是怎麼處理COM/CX/CLR/AMP的
不說別的,終於不用再忍受 M$ 對標準支持的龜速以及各種神奇的 bug 了。。。
我認為開發Windows原生應用的人不大可能轉移到clang,微軟的目的也不在於此,而是希望藉助統一的開發功具吸引iOS和Android的開發者把程序移植到Windows。這跟之前把 iOS和Android開發環境集成進宇宙無敵的Visual Studio的目的是一樣的:「求求你們順便也幫Windows開發一些App吧……」
偏譯速度快
刷oi/acm終於能用vs了
不會用。
推薦閱讀:
※編譯 C++ 項目時模板引發的「undefined reference to」問題?
※在哪些領域,C++ 還有著不可替代的優勢?為什麼?
※C 語言局部變數,堆與棧的問題?
※C++ 內置變數字元串有什麼好的實現思路?
※怎麼讓我寫出個零位元組的類了?
TAG:微軟Microsoft | 編程 | C |