我嘗試了Clang(3.4版,通過Windows預建的二進制文件)來查看它是否可以替代GCC(4.8.1版,使用MinGW)。但是,我無法獲得一個簡單的程序來工作。當輸出endl時Clang段錯誤
#include <iostream>
int main()
{
std::cout << std::endl;
}
鏘能夠編譯和鏈接程序,但運行它導致SIGSEGV
信號和0xC0000005
返回代碼。輸出一個字符串工作正常,但std::flush
導致相同的結果,但允許流自動刷新本身沒問題。
調試程序只顯示一個包含__mingw_CRTStartup()
(Clang使用libstdC++,因爲它沒有安裝libC++)和std::cout()
的調用堆棧。什麼可能導致這種情況,以及如何解決這個問題?
編輯:當使用其他ostream操縱器如std::dec
和std::unitbuf
時會發生同樣的事情。
我猜你在標準庫版本中存在不匹配。你是如何安裝libstdC++以及如何編譯和鏈接你的可執行文件的? –
@NateKohl我正在使用由mingw-get與GCC其餘部分一起安裝的libstdC++版本。至於編譯,我從命令行使用'clang ++ a.cpp'。 – Kyle
可能會添加「return 0」或替換爲「void main()' –