【问题标题】:clang++: Errors in standard header filesclang++:标准头文件中的错误
【发布时间】:2016-07-30 20:39:54
【问题描述】:

我刚刚在我的 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 路径设置为 Microsoft 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 本身量身定制的标头,或者我只是做错了什么?

谢谢,雷

【问题讨论】:

  • -c 是做什么的?
  • @VeniVidiVici 只编译,不要链接。
  • 男孩,我在使用 g++ 时遇到了一个与此非常相似的问题。我希望我能准确地记得我做了什么。我想我只是使用了 c++11 标签,但这不适用于这里。

标签: c++ compiler-errors clang clang++


【解决方案1】:

固定:

我回到了 LLVM clang 3.7.0(候选版本 3)64 位,所有问题都在 Microsoft 和 minGW64 头文件中消失了。看来 3.8.1 版本肯定是退步了!

【讨论】:

  • 不是clang 3.8.1的错。我目前在Win10上使用自己用mingw-w64 6.1.0构建的clang 3.8.1,一切正常。
  • @Carousel 我坦率地承认我没有答案,显然还有其他问题。目前我所知道的是,我可以在 3.7.0 和 3.8.1 安装之间来回切换,并且 3.7.0 始终可以运行,而 3.8.1 始终会出现标题内容错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-18
  • 2015-10-11
  • 1970-01-01
  • 2021-08-31
  • 2011-11-08
  • 2016-12-01
  • 1970-01-01
相关资源
最近更新 更多