boost::lexical_cast компилирует с предупреждениями
Составление следующего:
// 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 ответ
Я GCC, есть простой трюк, чтобы заставить замолчать все предупреждения от заголовков конкретной библиотеки. Просто относитесь к ним как к системным заголовкам. Насколько я знаю, это безопасно, и я использую это как курс стандартной практики.
То есть настройте командную строку для использования -isystem
вместо -I
указать расположение заголовка Boost. Все остальное остается прежним.
Например, это взято из Makefile
одного из моих проектов:
BOOST=/usr/local/Cellar/boost/1.48.0
CXXFLAGS+=-isystem$(BOOST)
Примечание: важно, чтобы вы не отключали предупреждения вообще в своих проектах. Наоборот, вы должны рассматривать все предупреждения как ошибки (-Werror
) и предупредить как можно больше (.eg -Wall -Wextra
). Вышеприведенное отключает только те предупреждения, вызванные Boost, а не из вашего собственного кода. Это так и должно быть.