错误“无法打开包含文件”,但它不包含在代码中

时间:2013-06-25 09:05:58

标签: c++ visual-studio initializer-list

在Visual Studio 2012中安装November CTP后出现错误。 错误发生在boost库的unordered_set.hpp中。但我没有在代码中的任何位置添加unordered_setinitializer_list。我只在一个文件中使用了boost,我确信这不是原因。

unordered_set.hpp中的

错误:

#if !defined(BOOST_NO_0X_HDR_INITIALIZER_LIST)
#include <initializer_list>  //error C1083: Cannot open include file: 'initializer_list': No such file or directory d:\boost\unordered\unordered_set.hpp
#endif

编辑:

之后我卸载了11月份的CTP,但仍然遇到了同样的错误。

2 个答案:

答案 0 :(得分:1)

在VS2012中默认启用

C++11。 来自boost标题

#if !defined(BOOST_NO_0X_HDR_INITIALIZER_LIST)
#include <initializer_list>
#endif

您可以尝试定义BOOST_NO_0X_HDR_INITIALIZER_LIST,或找到initializer_list标题位置。

// config/suffix.hpp
#if defined(BOOST_NO_INITIALIZER_LISTS) && !defined(BOOST_NO_0X_HDR_INITIALIZER_LIST)
#  define BOOST_NO_0X_HDR_INITIALIZER_LIST
#endif

// config/compilers/visualc.hpp
#if _MSC_VER <= 1500  || !defined(BOOST_STRICT_CONFIG) // 1500 == VC++ 9.0
#  define BOOST_NO_INITIALIZER_LISTS
#endif

BOOST_STRICT_CONFIG可能会在config/user.hpp中发表评论。

但是,看起来你没有现代的Visual C ++标题,这很奇怪,因为你有VS2012(实际上会在VS2010中添加initializer_list标题)。

答案 1 :(得分:0)

今天有同样的问题,我发现安装11月CTP是不够的,你需要将项目配置下的平台工具集更改为Microsoft Visual C++ Compiler Nov 2012 CTP (v120_CTP_Nov2012)以实际使用新功能,希望这对任何人都有帮助。