boost :: lexical_cast компилирует с предупреждениями - PullRequest
3 голосов
/ 01 марта 2012

Составляем следующее:

// file main.cpp

#include <string>
#include <boost/lexical_cast.hpp>

int main()
{
    boost::lexical_cast<std::string>( 656.16 );
    return 0;
}

уступает этому:

/usr/local/include/boost/lexical_cast.hpp:1184: warning: ISO C++ does not support the ‘%lg’ printf format

Почему? Как избежать этого предупреждения?

1 Ответ

4 голосов
/ 01 марта 2012

У меня GCC, есть простой трюк, чтобы заставить замолчать все предупреждения от заголовков конкретной библиотеки.Просто относитесь к ним как к системным заголовкам.Насколько я знаю, это безопасно, и я использую его в качестве курса стандартной практики.

То есть настройте командную строку, чтобы использовать -isystem вместо -I, чтобы указать расположение заголовка Boost,Все остальное остается прежним.

Например, это взято из Makefile одного из моих проектов:

BOOST=/usr/local/Cellar/boost/1.48.0
CXXFLAGS+=-isystem$(BOOST)

Примечание: важно, чтобы вы не делалиt тишина предупреждений в целом в ваших проектах.Напротив, вы должны рассматривать все предупреждения как ошибки (-Werror) и предупреждать как можно больше (.eg -Wall -Wextra).Вышеприведенное отключает только те предупреждения, вызванные Boost, а не из вашего собственного кода.Так и должно быть.

...