/ / path of regex_byref_matcher.hpp при използване на xp :: sregex :: compile - boost, compilation, boost-xpressive

път на regex_byref_matcher.hpp при използване на xp :: sregex :: compile - boost, компилация, boost-xpressive

Забелязах, че когато използвам xp :: sregex ::компилирате в моя код, низ ... 3rdpartyboost-1_58boost / xpressive / detail / core / matcher / regex_byref_matcher.hpp (с моя местен път) се появява в двоичния код, компилиран в модификациите за освобождаване. Има ли начин да го премахнете?

Отговори:

1 за отговор № 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 зависи, използва подобни конструкции