c++ - 是否可以使用 Clang 3.1 和 VC11 Beta header 编译 C++ 源代码?

标签 c++ visual-c++ c++11 clang visual-c++-2012

我正在尝试在 Windows 上使用带有 clang 的 STL header 编译一个相当简单的“hello world”程序,但我无法做到这一点。

我使用 VC11 Beta 从存储库编译了 Clang 3.1,没有出现任何问题。 现在我正在尝试使用已经编译的 Clang 来使用 VC11 header 编译一个“hello world”示例,但是我得到了一堆错误,这似乎表明 Clang 正在迷失在 VC11 上模拟可变参数模板的一些宏魔法,虽然我没有直接使用这个宏魔法。

我的包含目录:

  • C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include
  • C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include
  • C:\Program Files (x86)\Windows Kits\8.0\Include\um
  • C:\Program Files (x86)\Windows Kits\8.0\Include\shared
  • C:\Program Files (x86)\Windows Kits\8.0\Include\winrt

我收到如下错误:

C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xstddef:1094:24: error: '_Nil' does not refer to a value

还有一些其他与宏相关的内容。

有人能够克服这个宏观问题吗? clang 预处理器在扩展此宏时是否存在问题?

最佳答案

Microsoft 的 C++ header 涉及尚不支持的扩展和特性。 Clang 可以在 Windows 上使用 C 头文件构建程序,但还不能使用 C++ 头文件。

由于 C 运行时可以运行,您可以使用仅依赖于 C 运行时的不同 C++ 标准库。我没试过,但也许 libc++ 可以那样使用。

关于c++ - 是否可以使用 Clang 3.1 和 VC11 Beta header 编译 C++ 源代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10128444/

相关文章:

QT 显示 "RTTI symbol not found for class"但工作正常

c++ - Boost graphviz自定义顶点标签

调整速度值时 C++ 矩形未正确定位?

visual-c++ - 当我尝试运行应用程序的 Debug模式时,显示 vld_x86 dll 未找到错误

c++ - VC++宏定义##运算符

c++ - 如何分配和检索成员变量中的值?

c++ - 为什么在返回语句中使用移动构造函数是合法的?

c++ - 在析构函数中抛出异常——有什么缺点?

c++ - 波形音频 - waveOutWrite 发出断断续续的声音

c++ - 如何进行 std::map 查找