为什么clang不会编译在VS2012中有效的源代码?

时间:2014-01-02 02:52:04

标签: c++ compiler-errors clang

我不知道我在这里做错了什么,但我不能为了我的生活而扼杀编译在VS2012编译好的现有代码。

包含类似strsafe.hxstring会导致奇怪的编译错误,其中最奇怪的是标准包含文件中间的“缺少关闭括号”。不用说,没有遗漏的支架。此外,move.h导致clang与

吵架
  

致命错误:函数声明符之后的预期函数体。

保护条款,如

#ifndef _FUNCTIONAL_
#error Must include <functional>
#endif

即使已包含功能,也会抛出错误。

我做错了什么?

2 个答案:

答案 0 :(得分:15)

一个编译器附带的头文件通常是针对该编译器实现而定制的,并且不一定能够与不同的编译器一起正常工作。

一般来说,您将无法使用Visual Studio附带的标头和其他编译器。

答案 1 :(得分:6)

RE

  

“包括像strsafe.h和xstring一样导致奇怪的编译错误,”

那些是Visual C ++标题。

clang可能没有类似的东西。

一个主要问题是你正在使用低级C字符串函数,微软(正确!)认为这些函数存在问题,并且(错误地)说服你被弃用。

改为使用std::string