视觉 是否可以使用 Clang 3.1 和 VC11 Beta 标头编译C++源代码
visual Is it possible to compile C++ sources with Clang 3.1 plus VC11 Beta headers?
我正在尝试使用带有 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++。我相信这会导致构建时的消息说您正在尝试编译一些可变参数模板。