Я заметил, что когда я использую xp :: sregex :: compile в моем коде, строка ... \ 3rdparty \ boost-1_58 \ boost/xpressive/detail/core/matcher/regex_byref_matcher.hpp (с моим локальным путем) появляется в двоичном коде, скомпилированном в моделях релиза. Есть ли способ удалить его?path of regex_byref_matcher.hpp при использовании xp :: sregex :: compile
1
A
ответ
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__) \
/**/
Имейте в виду:
- потребности Hack to go до любых других Xpressive включает
- это ограничит полезность сообщений, если они происходят
- есть вероятность того, что одна из библиотек, которые Xpressive зависит от того, использует подобные конструкции
пожалуйста, напишите [SSCCE] (Http: // sscce.org/)/[MCVE](http://stackoverflow.com/help/mcve) – sehe
Спасибо, это имеет смысл, я пробовал, но я все еще получаю путь от regex_byref_matcher.hpp в двоичном формате, Вместо этого вы увидите строку «source-hidden». Также он скомпилировался успешно только с undef, поэтому он действительно не встречал этот макрос. – user3136169
Теперь я немного смущен. Вы решили это? – sehe