Форум программистов, компьютерный форум CyberForum.ru

This function or variable may be unsafe - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 54, средняя оценка - 4.76
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
26.12.2013, 02:29     This function or variable may be unsafe #1
Здорова господа!

Скачал визуал студио 2013 премиум и в общем весь старый код пишет с ошибками типо он не безопасен нужно использовать функции с _s на конце. От примерно какие ошибки выводятся:

c:\opencv\build\include\opencv2\flann\logger.h(66): error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 12.0\vc\include\stdio.h(211): см. объявление "fopen"
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========


нужно fopen() заменить на fopen_s() тогда норм будет, ну смысл мне заменять если я использую готовые библиотеки.
strcmp() на strcmp_s() strcpy() на strcpy_s() и т.д.
Можно ли как то отключить такой режим что б старые функции работали???

Добавлено через 6 минут
Наверно не буду ничего придумывать, есть визуал студио 2010 и что то мне кажется она будет актуальна еще очень долго, а все эти vs 2012, vs2013 в топку, половина либ под них не работает.

Добавлено через 3 минуты
Я вообще от смотрю выходят новые версии визуал студио, а либы то есть старые к ним, там например 2008 года 2004 пусть 2010 и все уже в новых версиях визуал студио эти либы не подключить, смысл тогда гнаться за последней версией компилятора если многие либы отстают от самой среды?

Добавлено через 2 минуты
Правильно ж лучше использовать старые инструменты провереные, по которым уже маны есть что как подключать файлы самих либ для нужной версии компилятора, чем быть первооткрывателем?

Добавлено через 23 минуты
Добавил строчку в файле main.cpp:
C++
1
#define _CRT_SECURE_NO_WARNINGS
Ну и ничего не помогло та же самая ошибка.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
26.12.2013, 02:33     This function or variable may be unsafe #2
Цитата Сообщение от ninja2 Посмотреть сообщение
use _CRT_SECURE_NO_WARNINGS
По ходу имеется в виду флаг к компилятору а не объявление.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
26.12.2013, 03:06  [ТС]     This function or variable may be unsafe #3
outoftime, Да добавил заработало, в принципе код один и тот же не меняется, либы которые раньше в vs2010 еле подключил, щас забыл как подключать, хорошо хоть ман сделал на блоге как и что покдлючал. Наверно новую буду версию использовать vs2013, если подумать то лучше конечно последние версии использовать.

Добавлено через 8 минут
Ладно все заработало, все подключилось, все таки лучше последнюю версию vs использовать .
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
26.12.2013, 03:10     This function or variable may be unsafe #4
ninja2, Может выложишь ссылочку на статью на свой блог? Мне аж интересно стало что там такого феерического (:
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
26.12.2013, 03:42  [ТС]     This function or variable may be unsafe #5
Цитата Сообщение от outoftime Посмотреть сообщение
Может выложишь ссылочку на статью на свой блог? Мне аж интересно стало что там такого феерического (:
Да ничо там нету, просто записал как либы подключать gdlib, openCV, curl. От если призабываешь, например как gdlib подлючить http://www.kselax.ru/2013/10/gdlib-r...l-studio-2010/
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
26.12.2013, 03:45     This function or variable may be unsafe #6
ninja2, Жалко что-ли?
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
26.12.2013, 03:48  [ТС]     This function or variable may be unsafe #7
Цитата Сообщение от outoftime Посмотреть сообщение
Жалко что-ли?
Он ссылка на подключение gdlib выше смотри я подредактировал, ну я там неправильно указал как подключать, не ну можно так как я там описал, я тогда этот пост писал когда про визуал студио и либы мало что знал, на самом деле лучше всего в свойствах проекта прописывать пути к нужным файлам.
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
26.12.2013, 03:52     This function or variable may be unsafe #8
Может лучше Qt использовать?
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
26.12.2013, 05:19  [ТС]     This function or variable may be unsafe #9
Цитата Сообщение от outoftime Посмотреть сообщение
Может лучше Qt использовать?
не qt я незнаю, да мне сильно не важно, у меня все сделано, мне пару функций улучшить нада и все.

Добавлено через 1 час 15 минут
Да и регулярные выражения не правильно работают например ленивые квантификаторы в 2013 вызывают Stack overflow, нужно явно максимальный размер задавать. ППЦ просто 2010 все нормально обрабатывает регулярные выражения, 2013 вылазят ошибки, то где то вылете, оно и в МСДН написано что не поддерживается для С++, но как же не поддерживается когда в 2010 все хорошо работает, это просто потеря времени, плюю на все и делаю в 2010, там хоть все работает, надоело время терять, там еще дальше какая нить ошибка вылезет. 2010 наверно лучше.

Добавлено через 7 минут
да 2013 я думаю ранувато использовать, сырая еще, да еще бесит один и тот же код рабочий в 2010 в 2013 уже не рабочий, от ужетот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
using std::cout;
using std::endl;
using std::cerr;
#include <cstdlib>
using std::exit;
#include <fstream>
using std::ifstream;
using std::ofstream;
#include <regex>
using std::regex;
using std::regex_replace;
#include <string>
using std::string;
 
int main()
{
    ifstream ifs("body.txt",ifstream::in);
    if(!ifs){cerr <<"don't open file"<<endl; exit(1);}
 
    string str;
    char c;
    while(ifs.get(c))str+=c;
    //str="<script> hellow world\nasdfsdf\rsdaf\t</script>";
    //cout <<str<<endl;
    str=regex_replace(str,regex("<script[^<>]*>(?:\n|\t|\r|.)*?</script>"),string("asdfsdf"));
    //cout <<str<<endl;
    cout <<"end"<<endl;
 
    return 0;
}
в 2010 прекрасно работает, в 2013 stack overflow почемуто "*?" вызывает переполнение стека, почему? TЕсли явно задаю размеры {0,400} то все норм. Это получается урезали функционал, мне такое не сильно нравится.

А что вы думаете господа, какую visual studio лучше использовать?
Убежденный
Системный программист
 Аватар для Убежденный
14175 / 6190 / 981
Регистрация: 02.05.2013
Сообщений: 10,296
Завершенные тесты: 1
26.12.2013, 11:26     This function or variable may be unsafe #10
Цитата Сообщение от ninja2 Посмотреть сообщение
Да и регулярные выражения не правильно работают
С некоторых пор пользуюсь только Boost.Regex и Boost.Xpressive.
Реализация регэкспов в Visual C++ бажная, уже не раз с этим сталкивался.

Цитата Сообщение от ninja2 Посмотреть сообщение
А что вы думаете господа, какую visual studio лучше использовать?
Лучше использовать ту, которая лучше всего отвечает своим запросам.
Я, например, сижу на Visual C++ 2008 SP1 и никуда с нее слезать не собираюсь.
Все, что нужно для программирования, там есть, а если чего-то и нет - подключаются
дополнительные расширения, библиотеки и т.д. Зато можно легко писать код,
совместимый со старыми системами - Win2K, XP и т.д. И работает она очень шустро,
не в пример современным "монстрам".
Croessmah
26.12.2013, 11:36
  #11

Не по теме:

Цитата Сообщение от Убежденный Посмотреть сообщение
С некоторых пор пользуюсь только Boost.Regex и Boost.Xpressive.
я частенько использую Boost вместо STL.
Цитата Сообщение от Убежденный Посмотреть сообщение
Реализация регэкспов в Visual C++ бажная, уже не раз с этим сталкивался.
Будем надеяться, что исправят, а то ведь мелкософт может и забить

ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
26.12.2013, 15:50  [ТС]     This function or variable may be unsafe #12
Цитата Сообщение от Убежденный Посмотреть сообщение
С некоторых пор пользуюсь только Boost.Regex и Boost.Xpressive.
Реализация регэкспов в Visual C++ бажная, уже не раз с этим сталкивался.
Не знаю в 2010 вроде норм, от в 2013 там да, у меня РВ что в 2010 норм работают, так как положено, хотя я их писал лишь бы они правильно находили совпадения, долго к ним не мог привыкнуть, в пхп РВ вроде лучше чем в С++, понятней как использовать было, но потом привык, в 2013 просто вылетает и все ниче не сделать. Не к РВ что в 2010 я к ним привык можно буст, но это нужно либу скачать подключить, а так прописал #include <regex> и все дела.

Добавлено через 2 минуты
А от VS2010 ultimate с офсайта можно скачать? Я что то смотрел там только экспрес.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
26.12.2013, 15:57     This function or variable may be unsafe #13
ninja2, Нельзя.
Убежденный
Системный программист
 Аватар для Убежденный
14175 / 6190 / 981
Регистрация: 02.05.2013
Сообщений: 10,296
Завершенные тесты: 1
26.12.2013, 16:40     This function or variable may be unsafe #14
Цитата Сообщение от ninja2 Посмотреть сообщение
Не знаю в 2010 вроде норм, от в 2013 там да
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <string>
#include <regex>
 
 
 
int main()
{
    using namespace std;
 
    try
    {
        string TestString = "127.0.0.1";
        string RegexPattern = "([0-9]{1,3}\\.){3}[0-9]{1,3}";
        regex  StdRex(RegexPattern);
        cout << regex_match(TestString, StdRex) << endl;
    }
 
    catch (exception const &Exc)
    {
        cerr << "ERROR: " << Exc.what() << endl;
    }
 
    return 0;
}
VC++2010 выдает 0.
VC++2013 выдает 1.
Онлайн-компилятор ideone (в режиме C++) выбрасывает исключение regex_error.
Boost.Regex стабильно выдает единицу.
Qwertiy
817 / 625 / 75
Регистрация: 20.08.2013
Сообщений: 2,525
26.12.2013, 17:13     This function or variable may be unsafe #15
Цитата Сообщение от ninja2 Посмотреть сообщение
error C4996: 'fopen': This function or variable may be unsafe.
Вот.

Цитата Сообщение от ninja2 Посмотреть сообщение
#define _CRT_SECURE_NO_WARNINGS
Надо добавлять в самое начало, до всех include'ов.

Добавлено через 28 секунд
Цитата Сообщение от ninja2 Посмотреть сообщение
А от VS2010 ultimate с офсайта можно скачать? Я что то смотрел там только экспрес.
Можно, но триал-версию, насколько я помню.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2016, 20:33     This function or variable may be unsafe
Еще ссылки по теме:

C++ 'localtime': This function or variable may be unsafe
C++ 'localtime': This function or variable may be unsafe
C++ Ошибка: 'strcpy': This function or variable may be unsafe

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

Или воспользуйтесь поиском по форуму:
sqll
0 / 0 / 0
Регистрация: 10.05.2016
Сообщений: 5
13.06.2016, 20:33     This function or variable may be unsafe #16
мне помогло
В разделе "Проект -> Свойства -> C / C ++ -> Preprocessor -> Препроцессор Определения" добавить _CRT_SECURE_NO_WARNINGS
Yandex
Объявления
13.06.2016, 20:33     This function or variable may be unsafe
Ответ Создать тему
Опции темы

Текущее время: 13:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru