Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ BOOST'中的错误消息;s在OSX 10.9 Xcode6上具有_binary_operator.hpp_C++_Macos_Boost - Fatal编程技术网

C++ BOOST'中的错误消息;s在OSX 10.9 Xcode6上具有_binary_operator.hpp

C++ BOOST'中的错误消息;s在OSX 10.9 Xcode6上具有_binary_operator.hpp,c++,macos,boost,C++,Macos,Boost,因此,我使用以下方便发布的内容构建了boost 它可以编译,我可以将Xcode6中的各个框架添加到我的iOS目标和OSX目标中 它在iOS上正常运行,但当我尝试在OSX上编译时,在has_binary_operator.hpp中出现以下行中的错误: template < typename Lhs, typename Rhs > struct operator_exists { static ::boost::type_traits::yes_type check(has_ope

因此,我使用以下方便发布的内容构建了boost

它可以编译,我可以将Xcode6中的各个框架添加到我的iOS目标和OSX目标中

它在iOS上正常运行,但当我尝试在OSX上编译时,在has_binary_operator.hpp中出现以下行中的错误:

template < typename Lhs, typename Rhs >
struct operator_exists {
   static ::boost::type_traits::yes_type check(has_operator); // this version is preferred when operator exists
   static ::boost::type_traits::no_type check(no_operator); // this version is used otherwise

   BOOST_STATIC_CONSTANT(bool, value = (sizeof(check(((make<Lhs>() BOOST_TT_TRAIT_OP make<Rhs>()),make<has_operator>())))==sizeof(::boost::type_traits::yes_type)));
};
模板
结构运算符_存在{
static::boost::type_traits::yes_type check(has_运算符);//当运算符存在时,首选此版本
static::boost::type_traits::no_type check(no_操作符);//此版本用于其他情况
BOOST_STATIC_常量(bool,value=(sizeof(check)((make()BOOST_TT_TRAIT_OP make()),make())==sizeof(::BOOST::type_traits::yes_type));
};
错误消息: …/boost.framework/Headers/type_traits/detail/has_binary_operator.hpp:155:42:应为成员名或“;”后声明说明符 …/boost.framework/Headers/type_traits/detail/has_binary_operator.hpp:156:41:应为成员名或“;”后声明说明符

截图:

注:我的stdlib是libc++的,我想在iOS和MacOSX中使用C++11和Clang。我的意思是,它在iOS上运行得非常好,那么为什么它不能在MacOSX目标上运行呢

快速修复: 取消定义“check”似乎可以解决此错误,因为这似乎是MacOSX上保留的关键字。不过,仅仅取消定义OSX关键字似乎是一个奇怪的解决方案,这不会在以后引起问题吗

#undef check
#include <boost/multi_array.hpp>
#未定义检查
#包括

check
不是一个关键字,而是苹果提供的文件中一个不幸命名的宏

这是boost(和其他图书馆供应商)多年来一直存在的问题

头文件
,用于查看此文件的某些历史记录

此文件的最新版本(Apple随10.9 SDK提供)包含以下文本:

  • 在Mac OS X 10.6之前,此文件中使用的宏名称与某些
  • 用户代码,包括Boost中的库和C++标准的建议工作,
  • 这个头的客户端无法解决这个冲突。因为
  • 其中,大多数宏都已更改,因此它们的前缀为
  • __并至少包含一个大写字母,这将缓解当前的压力
  • 以及未来的冲突。然而,为了让现有资源继续编译
  • 兼容性宏在末尾用旧名称定义。托普斯的剧本
  • 在此文件末尾,将转换目录中使用的所有旧宏名称
  • 给新名字打电话。建议客户端根据需要迁移到这些新宏
  • 他们更新了源代码,因为MacOSX的未来版本将删除
  • 旧的宏定义(不带双下划线前缀)。客户
  • 要编译没有旧宏定义的宏,可以定义宏
  • __在创建此文件之前,将不带下划线的断言\u宏\u定义\u版本\u设置为0
  • 包括在内
因此,您可以在构建命令中添加
-D\u断言\u宏\u定义\u版本\u而不使用\u下划线=0
,以解决此问题


或者,您也可以获得更新版本的boost,其中这些调用已从
check
重命名为
s\u check

check
不是一个关键字,而是苹果提供的文件中一个不幸命名的宏

这是boost(和其他图书馆供应商)多年来一直存在的问题

头文件
,用于查看此文件的某些历史记录

此文件的最新版本(Apple随10.9 SDK提供)包含以下文本:

  • 在Mac OS X 10.6之前,此文件中使用的宏名称与某些
  • 用户代码,包括Boost中的库和C++标准的建议工作,
  • 这个头的客户端无法解决这个冲突。因为
  • 其中,大多数宏都已更改,因此它们的前缀为
  • __并至少包含一个大写字母,这将缓解当前的压力
  • 以及未来的冲突。然而,为了让现有资源继续编译
  • 兼容性宏在末尾用旧名称定义。托普斯的剧本
  • 在此文件末尾,将转换目录中使用的所有旧宏名称
  • 给新名字打电话。建议客户端根据需要迁移到这些新宏
  • 他们更新了源代码,因为MacOSX的未来版本将删除
  • 旧的宏定义(不带双下划线前缀)。客户
  • 要编译没有旧宏定义的宏,可以定义宏
  • __在创建此文件之前,将不带下划线的断言\u宏\u定义\u版本\u设置为0
  • 包括在内
因此,您可以在构建命令中添加
-D\u断言\u宏\u定义\u版本\u而不使用\u下划线=0
,以解决此问题


或者,您也可以获得更新版本的boost,其中这些调用已从
check
重命名为
s\u check

check
不是一个关键字,而是苹果提供的文件中一个不幸命名的宏

这是boost(和其他图书馆供应商)多年来一直存在的问题

头文件
,用于查看此文件的某些历史记录

此文件的最新版本(Apple随10.9 SDK提供)包含以下文本:

  • 在Mac OS X 10.6之前,此文件中使用的宏名称与某些
  • 用户代码,包括Boost中的库和C++标准的建议工作,
  • 这个头的客户端无法解决这个冲突。因为
  • 其中,大多数宏都已更改,因此它们的前缀为
  • __并至少包含一个大写字母,这将缓解当前的压力
  • a