2010-05-08 3 views
2

У меня есть очень короткая программа, написанная на повышении :: XpressiveПредварительно компилировать .h файлов


#include <iostream> 
#include <boost/xpressive/xpressive.hpp> 

using namespace boost::xpressive; 

int main() 
{ 
    std::string hello("hello world!"); 

    sregex rex = sregex::compile("(\\w+) (\\w+)!"); 
    smatch what; 

    if(regex_match(hello, what, rex)) 
    { 
     std::cout << what[0] << '\n'; // whole match 
     std::cout << what[1] << '\n'; // first capture 
     std::cout << what[2] << '\n'; // second capture 
    } 

    return 0; 
} 

Это Xpressive «привет мир». Для компиляции требуется значительно больше времени, чем обычный мир приветствия. Я думаю, это потому, что файл xpressive.hpp настолько огромен. Есть ли способ предварительно скомпилировать или предварительно обработать файл .hpp, чтобы компиляция была намного быстрее?

ответ

6

Вы можете использовать предварительно скомпилированные заголовки, если ваш компилятор поддерживает их; оба g++ и Visual C++ поддерживают прекомпилированные заголовки, как и большинство других современных компиляторов C++, я подозреваю.

+0

интересный. Есть ли простой способ прекомпилировать все заголовки заголовков в Ubuntu? – User1

+0

@ пользователь1. Вы могли бы, но это плохая идея. Быстрый поиск «предварительно скомпилированных заголовков и шаблонов» дает http://gamesfromwithin.com/the-care-and-feeding-of-pre-compiled-headers. В комментариях кто-то говорит, что Boost.MPL генерирует HUGE pch-файлы, которые – KitsuneYMG

+0

@ kts Спасибо за ссылку. Это очень интересная статья. Я нашел комментарий, который вы упомянули. У пользователя был VC++. Интересно, произойдет ли замедление в gcc. – User1