视觉 是否可以使用 Clang 3.1 和 VC11 Beta 标头编译C++源代码

visual Is it possible to compile C++ sources with Clang 3.1 plus VC11 Beta headers?

本文关键字:Beta 编译 源代码 C++ VC11 可以使 是否 Clang 视觉      更新时间:2023-10-16

我正在尝试使用带有 clang 的 stl 标头编译一个相当简单的"hello world"程序,但我无法做到这一点。

我已经使用 VC11 Beta 从存储库编译了 Clang 3.1,没有问题。现在我正在尝试使用已经编译的 Clang 使用 VC11 标头编译"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:\程序文件 (x86)\Windows 工具包\8.0\包含\共享
  • C:\Program Files (x86)\Windows Kits\8.0\Include\winrt

我收到以下错误:

C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xstddef:1094:24:错误:"_Nil"不引用值

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

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

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

由于 C 运行时

正常工作,因此您可能能够使用仅依赖于 C 运行时的不同C++标准库。我还没有尝试过,但也许libc ++可以这样使用。

我非常确定您将无法使用clang来编译某些标头,例如C:\Program Files (x86)\Windows Kits\8.0\Include\winrt。原因是因为Windows 8带来了带有一些扩展的C++版本。此版本称为 C++/CX

某些扩展(如 ref 类)不是标准C++。我相信这会导致构建时的消息说您正在尝试编译一些可变参数模板。