2016-07-30 56 views
2

我剛剛在我的64位Windows 10系統上安裝了64位版本的Clang 3.8.1和MinGW-w64 5.1.0,並且看上去完全成功的安裝和路徑配置我試圖用所示的命令行編譯如下代碼:鏗鏘聲++:標準頭文件中的錯誤

clang++ -c test.cpp 

#include <iostream> 
int main() 
{ 
    std::cout << "Hello world!\n"; 
    return 0; 
} 

我第一次與我的INCLUDE設置爲微軟VS2015頭然後將它們設置爲mingw64頭路試了一下,但在有內容錯誤這兩種情況(儘管實際找到的任何頭文件都沒有問題)。

在mingw64情況下,下面是一個典型的錯誤:

C:\mingw64\x86_64-w64-mingw32\include\stdio.h:179:86: error: expected ';' 
after top level declarator int __cdecl __mingw_sprintf (char * 
__restrict__ , const char * __restrict__ , ...) __MINGW_NOTHROW; 

而在VS2015情況下,下面是典型的:

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\limits:611:33: 
error: use of undeclared identifier 'char16_t' template<> class numeric_limits<char16_t> 

我還試圖每個-std的= C + +98通過-std = C++ 14個開關,但它沒有區別。各個頭文件與gcc和cl編譯器一起工作良好。是否還有其他一些我應該使用的頭文件是專門爲Clang本身定製的,還是我只是在做錯什麼?

謝謝,雷

+0

'-c'做什麼? – 2016-07-30 21:09:40

+0

@VeniVidiVici只需編譯,不要鏈接。 –

+0

男孩,我在使用g ++時遇到了與此非常相似的問題。我希望我能記得我所做的。我想我只是使用了C++ 11標籤,但這不適用於此。 – 2016-07-30 21:19:25

回答

0

修正:

我回到LLVM鐺3.7.0(發佈候選3)64位,所有的問題都在微軟和minGW64頭文件就走開了。似乎3.8.1版本一定是倒退了一步!

+0

這不是叮噹聲3.8.1的錯。我目前在Win10上使用自己用mingw-w64 6.1.0構建的clang 3.8.1,所有東西都可以正常工作。 – Carousel

+0

@ Carousel我坦率地承認我沒有答案,而且顯然還有其他問題。我現在所知道的是,我可以在3.7.0和3.8.1安裝之間來回切換,3.7.0總是可以工作,而3.8.1總是會給標題內容帶來錯誤。 – BenevolentDeity