2016-07-30 92 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