Форум программистов, компьютерный форум, киберфорум
Boost C++
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.93/28: Рейтинг темы: голосов - 28, средняя оценка - 4.93
3 / 3 / 0
Регистрация: 25.12.2009
Сообщений: 50
1

Пример из документации BOOST

06.05.2013, 10:16. Показов 5223. Ответов 30
Метки нет (Все метки)

Доброе утро) Скопировал пример из документации boost, компилирую в среде Visual Studio 2012...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int main(int argc, char *argv[]) {
    std::string str1("hello abc-*-ABC-*-aBc goodbye");
 
    typedef std::vector< boost::iterator_range<std::string::iterator> > find_vector_type;
    find_vector_type FindVec; // #1: Search for separators
    ifind_all( FindVec, str1, "abc" ); // FindVec == { [abc],[ABC],[aBc] }
 
    typedef std::vector< std::string > split_vector_type;
    split_vector_type SplitVec; // #2: Search for tokens
    boost::split( SplitVec, str1, boost::is_any_of("-*"), boost::token_compress_on ); // SplitVec == { "hello abc","ABC","aBc goodbye" }
 
    return 0;
}
Ошибка следующая:
C++
1
Ошибка    1   error C4996: 'std::_Copy_impl': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators'   c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility 2176    1   clock6
Странно, до этого создал 3 проекта c абсолютно идентичными параметрами и такой ошибки не было, а теперь вдруг выскочила, подскажите что не так?
Добавил атрибут -D_SCL_SECURE_NO_WARNINGS при компиляции и ошибка исчезла, но является ли это решением проблемы, не опасно ли так делать?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.05.2013, 10:16
Ответы с готовыми решениями:

boost::asio пример
Привет! Можно, пожалуйста, простейший пример работы с boost::asio - клиент-серверная программа,...

Вопрос по синтаксису, пример из Boost
Фрагменты файла boost/date_time/posix_time/posix_time_config.hpp: namespace boost { namespace...

Не компилируется пример с использованием boost из книги
Visual Studio 10, Windows 7. Решил попробовать использовать boost. Выбрал пример 10.19 чтения...

Boost начало работы: Undefined reference to `boost::system::generic_category() '
Добрый день Собственно говоря возникла необходимость использовать boost в работе. Поставил так: ...

30
4031 / 2321 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
06.05.2013, 11:24 2
В тексте самой ошибки подсказка:
Цитата Сообщение от Lopster92 Посмотреть сообщение
To disable this warning, use -D_SCL_SECURE_NO_WARNINGS option.
Хотя странно спрашивать об этом в разделе по билдеру...
0
Ушел с форума
Эксперт С++
16422 / 7397 / 1185
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
06.05.2013, 12:26 3
Предупреждения компилятора лучше не подавлять, а разбираться в причинах.
В данном случае вас предупреждают, что используется устаревшая функция, вместо
которой лучше и безопаснее применять ее более совершенный аналог.

Если "виновник" предупреждения - сторонняя библиотека (Boost), то ничего другого не
остается, кроме как отключить его через макроопределение, которое указали выше.
А если причина в вашем коде - это повод задуматься, как минимум.

Подробнее об этом можно прочесть здесь - http://msdn.microsoft.com/en-u... .100).aspx
0
3 / 3 / 0
Регистрация: 25.12.2009
Сообщений: 50
06.05.2013, 16:02  [ТС] 4
Цитата Сообщение от BRcr Посмотреть сообщение
В тексте самой ошибки подсказка:
Уважаемый, BRcr, прошу повнимательней прочитать суть вопроса:
Цитата Сообщение от Lopster92 Посмотреть сообщение
Добавил атрибут -D_SCL_SECURE_NO_WARNINGS при компиляции и ошибка исчезла, но является ли это решением проблемы, не опасно ли так делать?
0
What a waste!
1592 / 1290 / 174
Регистрация: 21.04.2012
Сообщений: 2,704
06.05.2013, 20:33 5
Цитата Сообщение от Lopster92 Посмотреть сообщение
use -D_SCL_SECURE_NO_WARNINGS
Всегда использую, иначе ругается на вполне обычные вещи вроде std::copy.
1
1663 / 1132 / 80
Регистрация: 21.08.2008
Сообщений: 4,725
Записей в блоге: 1
07.05.2013, 09:22 6
Все дело в мелкософтовском говнокомпиляторе. Они хотят подсадить на свою говнопродукцию, поэтому вводят всякие дефайны типа "устаревшая и небезопасная функция", мол пользуйтесь нашим говном и тогда вам откроются врата в рай.
Любой другой компилятор собирает код, соответствующий стандарту без всяких варнингов и ошибок.
1
3 / 3 / 0
Регистрация: 25.12.2009
Сообщений: 50
07.05.2013, 14:00  [ТС] 7
Цитата Сообщение от oxotnik Посмотреть сообщение
Все дело в мелкософтовском говнокомпиляторе. Они хотят подсадить на свою говнопродукцию, поэтому вводят всякие дефайны типа "устаревшая и небезопасная функция", мол пользуйтесь нашим говном и тогда вам откроются врата в рай.
Любой другой компилятор собирает код, соответствующий стандарту без всяких варнингов и ошибок.
Благодарю за развернутый ответ:-)
0
Эксперт С++
8364 / 6101 / 611
Регистрация: 10.12.2010
Сообщений: 28,457
Записей в блоге: 31
07.05.2013, 16:42 8
Да все это ерунда если код якобы соответствует стандарту это не делает еще его более безопасным, тем более предупреждение это только предупреждение ...
0
1663 / 1132 / 80
Регистрация: 21.08.2008
Сообщений: 4,725
Записей в блоге: 1
07.05.2013, 16:51 9
Цитата Сообщение от Avazart Посмотреть сообщение
если код якобы соответствует стандарту это не делает еще его более безопасным
Не об этом речь, а о том, что вышеназванный компилятор содержит в себе реализацию стандартного С++ функционала с пометкой "небезопасный и устаревший" и так же параллельно содержит свою говнореализацию того же самого функционала, но с пометкой "безопасно - протестированно микрософтом".
Т.е. они заставляют программиста писать заведомо непереносимый код (если он не забъет на все эти гововарнинги).
0
Эксперт С++
8364 / 6101 / 611
Регистрация: 10.12.2010
Сообщений: 28,457
Записей в блоге: 31
07.05.2013, 16:57 10
Цитата Сообщение от oxotnik Посмотреть сообщение
"небезопасный и устаревший" и так же параллельно содержит свою говнореализацию того же самого функционала, но с пометкой "безопасно - протестированно микрософтом".
Ну может оно действительно не безопасно если пишут?
Цитата Сообщение от oxotnik Посмотреть сообщение
но микрософтом".
Т.е. они заставляют программиста писать заведомо непереносимый
То что он не переносимый не есть плохо...
Я собственно и не понимаю почему M$ должно заботится о том что бы код был переносимым на не их платформы...
Тут вся ответственность на программисте обращать внимание на warning или нет.
0
What a waste!
1592 / 1290 / 174
Регистрация: 21.04.2012
Сообщений: 2,704
07.05.2013, 16:58 11
Цитата Сообщение от oxotnik Посмотреть сообщение
Т.е. они заставляют программиста писать заведомо непереносимый код (если он не забъет на все эти гововарнинги).
Ну не заставляют - "ненавязчиво" предлагают )
0
1663 / 1132 / 80
Регистрация: 21.08.2008
Сообщений: 4,725
Записей в блоге: 1
07.05.2013, 17:04 12
Цитата Сообщение от Avazart Посмотреть сообщение
Ну может оно действительно не безопасно если пишут?
Т.е. С++ от микрософта это не совсем С++ получается? Ибо часть STL у них "небезопасна". Мне не понятно, зачем делать аналог стандартной С-шной функции но с каким нибудь префиксом/суффиксом и обявлять что она безопасна, а реализацию стандартной ф-ции намерянно сделать через задницу и написать что она небезопасна?
Цитата Сообщение от Avazart Посмотреть сообщение
То что он не переносимый не есть плохо...
Пару недель назад закончил перенос 4-х проектов (не своих)... И скажу что непереносимость от микрософта это очень плохо.
Цитата Сообщение от Avazart Посмотреть сообщение
Я собственно и не понимаю почему M$ должно заботится о том что бы код был переносимым.
Да они в принципе о многом уже озаботились
0
Эксперт С++
8364 / 6101 / 611
Регистрация: 10.12.2010
Сообщений: 28,457
Записей в блоге: 31
07.05.2013, 17:11 13
Цитата Сообщение от oxotnik Посмотреть сообщение
Да они в принципе о многом уже озаботились
ну это даже смешно ...

Опять же нафига думать от том что бы код был переносим на платформы потенциальных конкурентов ?

Добавлено через 2 минуты
Пару недель назад закончил перенос 4-х проектов (не своих)... И скажу что непереносимость от микрософта это очень плохо.
Ну думаю это вина не M$, а программиста ...
0
What a waste!
1592 / 1290 / 174
Регистрация: 21.04.2012
Сообщений: 2,704
07.05.2013, 17:16 14
Цитата Сообщение от Avazart Посмотреть сообщение
Ну может оно действительно не безопасно если пишут?
Ну это "небезопасно" - вполне стандартные средства, и выдавать на это предупреждение - довольно странно. "Не забудь определить тот макрос с _" .

Не по теме:

Может стоило сразу писать: C++: this programming language may be unsafe. Consider using C++/CLI instead? :)

2
1663 / 1132 / 80
Регистрация: 21.08.2008
Сообщений: 4,725
Записей в блоге: 1
07.05.2013, 17:18 15
Цитата Сообщение от Avazart Посмотреть сообщение
Опять же нафига думать от том что бы код был переносим на платформы потенциальных конкурентов ?
Под винду есть только один православный компилятор?
0
Эксперт С++
8364 / 6101 / 611
Регистрация: 10.12.2010
Сообщений: 28,457
Записей в блоге: 31
07.05.2013, 17:23 16
Цитата Сообщение от gray_fox Посмотреть сообщение
Ну это "небезопасно" - вполне стандартные средства, и выдавать на это предупреждение - довольно странно.
Если есть лучшая альтернатива, то думаю не странно, вопрос только в том действительно ли она лучше и почему.

Добавлено через 1 минуту
Цитата Сообщение от oxotnik Посмотреть сообщение
Под винду есть только один православный компилятор?
А зачем менять компилятор если и так работает ?
0
What a waste!
1592 / 1290 / 174
Регистрация: 21.04.2012
Сообщений: 2,704
07.05.2013, 17:28 17
Цитата Сообщение от Avazart Посмотреть сообщение
Если есть лучшая альтернатива, то думаю не странно, вопрос только в том действительно ли она лучше и почему.
ИМХО лучше бы сделали тогда _SCL_SECURE_WARNINGS, который включал бы эти предупреждения, раз такие заботливые. Так то, конечно, не проблема один макрос определить.
0
1663 / 1132 / 80
Регистрация: 21.08.2008
Сообщений: 4,725
Записей в блоге: 1
07.05.2013, 17:33 18
Цитата Сообщение от Avazart Посмотреть сообщение
А зачем менять компилятор если и так работает ?
Патамушта он платный, а штоб поставить бесплатный - надо посношаться хорошенько с регистрациями и со всем сайтом производителя.
0
Эксперт С++
8364 / 6101 / 611
Регистрация: 10.12.2010
Сообщений: 28,457
Записей в блоге: 31
07.05.2013, 17:35 19
Цитата Сообщение от oxotnik Посмотреть сообщение
Патамушта он платный, а штоб поставить бесплатный - надо посношаться хорошенько с регистрациями и со всем сайтом производителя.
Так изначально пиши на том который тебя устраивает компиляторе, зачем таскать туда-сюда код и удивляться почему проблемы.
0
1663 / 1132 / 80
Регистрация: 21.08.2008
Сообщений: 4,725
Записей в блоге: 1
07.05.2013, 17:43 20
Цитата Сообщение от Avazart Посмотреть сообщение
Так изначально пиши на том который тебя устраивает компиляторе, зачем таскать туда-сюда код и удивляться почему проблемы.
А если несколько независимых контор пишут код, и у каждой своя политика в отношении компиляторов? Для этого и был придуман стандарт, на который мелкософт и плюет ради подсаживания на свои говнопродукты.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.05.2013, 17:43

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Boost Log - undefined reference to `boost::system::system_category()'
Пытаюсь скомпилировать код из примеров Boost Log:#include &lt;boost/log/trivial.hpp&gt; int main(int,...

Использование boost и boost.build с несколькими компиляторами
Здравствуйте! Собрал библиотеку boost и boost.build для двух компиляторов: MinGW 4.5.2 и Visual...

Метапрограммирование в boost::proto (boost::spirit)
В библиотеке boost:: proto есть такой код calculator&lt;proto::terminal&lt;placeholder&lt;0&gt; &gt;::type&gt;...

Qt и boost boost::system::generic_category()
Добрый день Не подскажите как настроить Qt на работу с boost? У меня в принципе все работает:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.