使用xp :: sregex :: compile时regex_byref_matcher.hpp的路径

时间:2016-03-01 12:50:19

标签: boost compilation boost-xpressive

我注意到当我在我的代码中使用xp :: sregex :: compile时,字符串...... \ 3rdparty \ boost-1_58 \ boost / xpressive / detail / core / matcher / regex_byref_matcher.hpp(使用我的本地路径) )出现在二进制代码中,在发布mods中编译。 有没有办法删除它?

1 个答案:

答案 0 :(得分:1)

毫无疑问,当代码使用__FILE__来获取好的断言/异常消息时。

Xpressive唯一直接使用它的地方是regex_error.hpp

#define BOOST_XPR_ENSURE_(pred, code, msg)                                                          \
    boost::xpressive::detail::ensure_(!!(pred), code, msg, BOOST_CURRENT_FUNCTION, __FILE__, __LINE__)  \
    /**/

你很容易被黑客攻击

#include <boost/xpressive/regex_error.hpp>

#undef BOOST_XPR_ENSURE_

#define BOOST_XPR_ENSURE_(pred, code, msg)                                                          \
    boost::xpressive::detail::ensure_(!!(pred), code, msg, BOOST_CURRENT_FUNCTION, "(source-hidden)", __LINE__)  \
    /**/

请记住:

  • 黑客需要在任何其他 Xpressive包括
  • 之前去
  • 这将限制消息的有用性,如果它们发生
  • Xpressive依赖的其中一个库可能使用类似的构造