【发布时间】:2012-04-25 02:04:32
【问题描述】:
我正在尝试在 Windows 上使用带有 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:\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: 错误:'_Nil' 没有引用值
还有一堆其他与宏相关的东西。
有人能够克服这个宏观问题吗?扩展此宏时 clang 预处理器是否存在问题?
【问题讨论】:
-
抛开宏,这不起作用,因为 Clang 不处理
__declspec。 -
@ildjarn 所以我认为头文件中没有满 __declscpec,使用 VC10 我能够使用 iostream 头文件(以及 VC10 中的其他头文件)毫无问题地编译相同的源代码。
-
@Chico:那是因为 VC10 理解
__declspec。 Clang 没有。 -
@NicolBolas 抱歉,我的意思是说“使用 VC10 标头”。假设与出现的问题相同的配置,只更改编译器版本,我没有遇到这些问题。
标签: c++ visual-c++ c++11 clang visual-c++-2012