由于'__value'符号,PIN 3.0编译错误

时间:2016-09-21 20:56:02

标签: c++ visual-c++ intel-pin

我使用Visual c ++ 2012将我的工具移植到PIN 3.0,因为我现在有Windows 10.我按照提供的移植指南here

然而,我遇到了一个错误:

error C4890: '__value': use of this keyword requires the command line option: /clr:oldSyntax

当打开/ clr:oldSyntax选项时,再加上RTTI可用性(/ GR而不是/ GR-),否则它与/ clr:oldSyntax不兼容,我或多或少会遇到同样的问题:

error C2059: syntax error: '__value'

此错误位于文件type_trait.h(PIN 3.0库的头文件)

#ifdef _STLP_STATIC_CONST_INIT_BUG
    static const bool __value;
#else
    static const bool __value = sizeof(__test<_Tp>(0)) == sizeof(__select_types::__t1);
#endif

这是一个常见问题,如果有,是否有任何解决方法?或者我在移植指南中遗漏了什么?我知道此PIN 3.0标头中引入的名称__value是隐藏的。

1 个答案:

答案 0 :(得分:0)

这显然是一个&#34; bug&#34;在visual c ++中报告here

解决方案是添加以下预处理器定义:

/D__value=_value