Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/83: Рейтинг темы: голосов - 83, средняя оценка - 4.96
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
1

This function or variable may be unsafe

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

Author24 — интернет-сервис помощи студентам
Здорова господа!

Скачал визуал студио 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.12.2013, 02:29
Ответы с готовыми решениями:

This function or variable may be unsafe
Привет всем, нужна помощь! При компиляции выдает ошибку - "fopen":This function or variable may be...

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

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

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

16
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
26.12.2013, 02:33 2
Цитата Сообщение от ninja2 Посмотреть сообщение
use _CRT_SECURE_NO_WARNINGS
По ходу имеется в виду флаг к компилятору а не объявление.
1
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
26.12.2013, 03:06  [ТС] 3
outoftime, Да добавил заработало, в принципе код один и тот же не меняется, либы которые раньше в vs2010 еле подключил, щас забыл как подключать, хорошо хоть ман сделал на блоге как и что покдлючал. Наверно новую буду версию использовать vs2013, если подумать то лучше конечно последние версии использовать.

Добавлено через 8 минут
Ладно все заработало, все подключилось, все таки лучше последнюю версию vs использовать .
0
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
26.12.2013, 03:10 4
ninja2, Может выложишь ссылочку на статью на свой блог? Мне аж интересно стало что там такого феерического (:
0
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
26.12.2013, 03:42  [ТС] 5
Цитата Сообщение от outoftime Посмотреть сообщение
Может выложишь ссылочку на статью на свой блог? Мне аж интересно стало что там такого феерического (:
Да ничо там нету, просто записал как либы подключать gdlib, openCV, curl. От если призабываешь, например как gdlib подлючить http://www.kselax.ru/2013/10/g... udio-2010/
0
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
26.12.2013, 03:45 6
ninja2, Жалко что-ли?
0
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
26.12.2013, 03:48  [ТС] 7
Цитата Сообщение от outoftime Посмотреть сообщение
Жалко что-ли?
Он ссылка на подключение gdlib выше смотри я подредактировал, ну я там неправильно указал как подключать, не ну можно так как я там описал, я тогда этот пост писал когда про визуал студио и либы мало что знал, на самом деле лучше всего в свойствах проекта прописывать пути к нужным файлам.
0
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
26.12.2013, 03:52 8
Может лучше Qt использовать?
0
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
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
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 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++ бажная, уже не раз с этим сталкивался.
Будем надеяться, что исправят, а то ведь мелкософт может и забить :D

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

Добавлено через 2 минуты
А от VS2010 ultimate с офсайта можно скачать? Я что то смотрел там только экспрес.
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
26.12.2013, 15:57 13
ninja2, Нельзя.
1
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 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
833 / 641 / 101
Регистрация: 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
0 / 0 / 0
Регистрация: 10.05.2016
Сообщений: 12
13.06.2016, 20:33 16
мне помогло
В разделе "Проект -> Свойства -> C / C ++ -> Preprocessor -> Препроцессор Определения" добавить _CRT_SECURE_NO_WARNINGS
0
1 / 1 / 0
Регистрация: 20.05.2016
Сообщений: 47
11.04.2017, 00:00 17
C++
1
#define _CRT_SECURE_NO_WARNINGS
Добавьте эту строчку в файл stdafx.h
после строчки :
C++
1
#pragma once
0
11.04.2017, 00:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.04.2017, 00:00
Помогаю со студенческими работами здесь

Ошибка C4996: 'gets': This function or variable may be unsafe
#include &lt;iostream&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; #include...

Ошибка: 'strcpy': This function or variable may be unsafe
error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To...

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

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


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru