我正在尝试在 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/