Функции _s в Visual Studio
Moderator: Little Muk
Функции _s в Visual Studio
В профвопросы кажется никто не заглядывает, напишу здесь, потом можно наверно и перенести. Захотел отладить старые программы в новом Visual Studio и компилятор стал злостно предупреждать что fopen() ныне небезопасна и отказался компилировать и мол надо теперь поменять на fopen_s(). Ну это сравнительно легко оказалось поправить убрав предупреждения в препроцессоре (что не есть хорошо). Погуглив тему обнаружил что Майкрософт подменяет некоторые функции function() своим аналогом function_s(). Кто с этим сталкивался и как лечили? Проекты кросплатформенnые поэтому тупо менять fopen на fopen_s не хотелось бы.
принципиально беспринципный
Re: Функции _s в Visual Studio
define ом всё убирается. Если сигнатура функции такая же, то тебе всё равно что function_s вызывается.
У тебя главная задача чтобы компилировалось на разных компиляторах. Define достаточно.
У тебя главная задача чтобы компилировалось на разных компиляторах. Define достаточно.
Re: Функции _s в Visual Studio
Спасибо. Да, народ на форумах подобное тоже пишет. Сигнатура не совсем такая, fopen берёт указатель на название файла а fopen_s ссылку, но не суть. Прийдётся немножко добавить в код. Ну типа так как в примере. Эх, не люблю усложнять код на ровном месте.vovan wrote:define ом всё убирается. Если сигнатура функции такая же, то тебе всё равно что function_s вызывается.
У тебя главная задача чтобы компилировалось на разных компиляторах. Define достаточно.
Code: Select all
FILE *fp_config;
const char *configfile ;
configfile = "bot.conf";
#ifdef WIN32
errno_t err;
if( (err = fopen_s( &fp_config, configfile, "r" )) !=0 ) {
#else
if ((fp_config = fopen(configfile, "r")) == NULL) {
#endif
fprintf(stderr, "Cannot open config file %s!\n", configfile);
}
принципиально беспринципный
Re: Функции _s в Visual Studio
А, что за end if до сих пор не расстреливают?
Если народ, который 20 лет назад мечтал о свободе, сегодня выбирает рабство...
https://novayagazeta.ru/articles/2013/0 ... volyutsiya
Россия как "Скотный двор"
еврей Михаил Веллер - Великий последний шанс
https://novayagazeta.ru/articles/2013/0 ... volyutsiya
Россия как "Скотный двор"
еврей Михаил Веллер - Великий последний шанс
Re: Функции _s в Visual Studio
Чем тебе не нравится препроцессор?anonim587 wrote:А, что за end if до сих пор не расстреливают?
https://msdn.microsoft.com/en-us/library/ew2hz0yd.aspx
msdn.microsoft.com wrote: Visual Studio 2015
Other Versions
For the latest documentation on Visual Studio 2017 RC, see Visual Studio 2017 RC Documentation.
The #if directive, with the #elif, #else, and #endif directives, controls compilation of portions of a source file. If the expression you write (after the #if) has a nonzero value, the line group immediately following the #if directive is retained in the translation unit.
принципиально беспринципный
- Simple
- Posts: 8678
- Joined: 28 Sep 2011, 10:46
- ник с it-ru.de: верифицирован
- Location: Питер - Ганновер
Re: Функции _s в Visual Studio
Блять, убивал бы на месте за такое.anonim587 wrote:А, что за end if до сих пор не расстреливают?
Бритва, ты что, не в курсе, что такой код потом саппортить будет полным кошмаром?
Is this your homework, Larry? (c)
Re: Функции _s в Visual Studio
только я этого не увидел ?
... fopen берёт указатель на название файла а fopen_s ссылку .... ???????
... fopen берёт указатель на название файла а fopen_s ссылку .... ???????
Если йето было б так то счастливы те мужчины, только равнозначность в понимании таких как ты, отлично от реалий по совести. (c) проц