2016-03-01 26 views

回答

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中所依賴的庫的一個使用類似的結構
  • 的可能性
+0

請發表[SSCCE(HTTP:// sscce.org/)[[MCVE](http://stackoverflow.com/help/mcve) – sehe

+0

謝謝,它是有道理的,我嘗試過,但我仍然在二進制文件中得到regex_byref_matcher.hpp的路徑,而不是看到字符串「source-hidden」。而且它只用undef編譯成功,所以它沒有真正滿足這個宏。 – user3136169

+0

我現在有點困惑。你解決了嗎? – sehe