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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 54, средняя оценка - 4.76
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
#1

This function or variable may be unsafe - C++

26.12.2013, 02:29. Просмотров 8100. Ответов 16
Метки нет (Все метки)

Здорова господа!

Скачал визуал студио 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
Ну и ничего не помогло та же самая ошибка.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2013, 02:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос This function or variable may be unsafe (C++):

'localtime': This function or variable may be unsafe - C++
студия 13 ругается на функцию time_t t = time(0); tm *lt = localtime(&t); и сама ошибка: Ошибка 1 error C4996: 'localtime': This...

'localtime': This function or variable may be unsafe - C++
Вот код time_t t; time(&t); tm * a; a = localtime(&t); и вот на что рагаеться компилятор 'localtime': This function or...

Ошибка: 'strcpy': This function or variable may be unsafe - C++
error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use...

Error C4996: 'gets': This function or variable may be unsafe - C++
#include "stdafx.h" #include"iostream" #include "cstdio" using namespace std; int main() { setlocale(LC_ALL,...

Warning C4996: 'strcpy': This function or variable may be unsafe - C++
написал программу все считает , но выводит ошибку окно как сделать отладку программы? Warning 1 warning C4996: 'strcpy': This function...

Error C4996: 'strcpy': This function or variable may be unsafe - C++
Классы: Ток-шоу, Развлекательная передача, Телеканал, СМИ (средство массовой информации), Радиостанция, Хит-парад Запросы: вывести...

16
outoftime
║XLR8║
510 / 432 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
26.12.2013, 02:33 #2
Цитата Сообщение от ninja2 Посмотреть сообщение
use _CRT_SECURE_NO_WARNINGS
По ходу имеется в виду флаг к компилятору а не объявление.
1
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
26.12.2013, 03:06  [ТС] #3
outoftime, Да добавил заработало, в принципе код один и тот же не меняется, либы которые раньше в vs2010 еле подключил, щас забыл как подключать, хорошо хоть ман сделал на блоге как и что покдлючал. Наверно новую буду версию использовать vs2013, если подумать то лучше конечно последние версии использовать.

Добавлено через 8 минут
Ладно все заработало, все подключилось, все таки лучше последнюю версию vs использовать .
0
outoftime
║XLR8║
510 / 432 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
26.12.2013, 03:10 #4
ninja2, Может выложишь ссылочку на статью на свой блог? Мне аж интересно стало что там такого феерического (:
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
26.12.2013, 03:42  [ТС] #5
Цитата Сообщение от outoftime Посмотреть сообщение
Может выложишь ссылочку на статью на свой блог? Мне аж интересно стало что там такого феерического (:
Да ничо там нету, просто записал как либы подключать gdlib, openCV, curl. От если призабываешь, например как gdlib подлючить http://www.kselax.ru/2013/10/gdlib-rabota-v-s-visual-studio-2010/
0
outoftime
║XLR8║
510 / 432 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
26.12.2013, 03:45 #6
ninja2, Жалко что-ли?
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
26.12.2013, 03:48  [ТС] #7
Цитата Сообщение от outoftime Посмотреть сообщение
Жалко что-ли?
Он ссылка на подключение gdlib выше смотри я подредактировал, ну я там неправильно указал как подключать, не ну можно так как я там описал, я тогда этот пост писал когда про визуал студио и либы мало что знал, на самом деле лучше всего в свойствах проекта прописывать пути к нужным файлам.
0
outoftime
║XLR8║
510 / 432 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
26.12.2013, 03:52 #8
Может лучше Qt использовать?
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
26.12.2013, 05:19  [ТС] #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 лучше использовать?
0
Убежденный
Ушел с форума
Эксперт С++
15689 / 7199 / 1138
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
26.12.2013, 11:26 #10
Цитата Сообщение от ninja2 Посмотреть сообщение
Да и регулярные выражения не правильно работают
С некоторых пор пользуюсь только Boost.Regex и Boost.Xpressive.
Реализация регэкспов в Visual C++ бажная, уже не раз с этим сталкивался.

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

Не по теме:

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

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

Добавлено через 2 минуты
А от VS2010 ultimate с офсайта можно скачать? Я что то смотрел там только экспрес.
0
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
26.12.2013, 15:57 #13
ninja2, Нельзя.
1
Убежденный
Ушел с форума
Эксперт С++
15689 / 7199 / 1138
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
26.12.2013, 16:40 #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 стабильно выдает единицу.
1
Qwertiy
821 / 629 / 75
Регистрация: 20.08.2013
Сообщений: 2,524
26.12.2013, 17:13 #15
Цитата Сообщение от ninja2 Посмотреть сообщение
error C4996: 'fopen': This function or variable may be unsafe.
Вот.

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

Добавлено через 28 секунд
Цитата Сообщение от ninja2 Посмотреть сообщение
А от VS2010 ultimate с офсайта можно скачать? Я что то смотрел там только экспрес.
Можно, но триал-версию, насколько я помню.
1
26.12.2013, 17:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.12.2013, 17:13
Привет! Вот еще темы с ответами:

Ошибка 1 error C4996: 'scanf': This function or variable may be unsafe - C++
Здравствуйте , подскажите пожалуйста с задачками) есть 2 задачки по массивам с ошибкой не могу понять в чем дело !) 1. #include...

Копирование строк - error C4996: 'strcpy': This function or variable may be unsafe - C++
Всем привет! :drink: char *p; char q; cin &gt;&gt; q; p = new char; strcpy(p, q); и тута VS мне говорит что...

Ошибка error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead - C++
#include &lt;iostream&gt; #include &lt;cstring&gt; #include &lt;fstream&gt; #include&lt;string&gt; #include&lt;iomanip&gt; using namespace std; struct...

Ошибка при работе с файлами: C4996: 'fopen': This function or variable may be unsafe - C++
Помогите пожалуйста. писал программу, по данному заданию. вроде как все написал, но с файлами получился косяк. не могу разобраться в чем...


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

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

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