Функции _s в Visual Studio

Ответить
Аватара пользователя
Бритва
Сообщения: 5016
Зарегистрирован: 20.08.2012 02:14
Где: Peterburg

Функции _s в Visual Studio

Сообщение Бритва »

В профвопросы кажется никто не заглядывает, напишу здесь, потом можно наверно и перенести. Захотел отладить старые программы в новом Visual Studio и компилятор стал злостно предупреждать что fopen() ныне небезопасна и отказался компилировать и мол надо теперь поменять на fopen_s(). Ну это сравнительно легко оказалось поправить убрав предупреждения в препроцессоре (что не есть хорошо). Погуглив тему обнаружил что Майкрософт подменяет некоторые функции function() своим аналогом function_s(). Кто с этим сталкивался и как лечили? Проекты кросплатформенnые поэтому тупо менять fopen на fopen_s не хотелось бы.
принципиально беспринципный

Изображение
vovan
Сообщения: 1521
Зарегистрирован: 22.09.2011 13:21
Род занятий: C++

Re: Функции _s в Visual Studio

Сообщение vovan »

define ом всё убирается. Если сигнатура функции такая же, то тебе всё равно что function_s вызывается.

У тебя главная задача чтобы компилировалось на разных компиляторах. Define достаточно.
Аватара пользователя
Бритва
Сообщения: 5016
Зарегистрирован: 20.08.2012 02:14
Где: Peterburg

Re: Функции _s в Visual Studio

Сообщение Бритва »

vovan писал(а):define ом всё убирается. Если сигнатура функции такая же, то тебе всё равно что function_s вызывается.

У тебя главная задача чтобы компилировалось на разных компиляторах. Define достаточно.
Спасибо. Да, народ на форумах подобное тоже пишет. Сигнатура не совсем такая, fopen берёт указатель на название файла а fopen_s ссылку, но не суть. Прийдётся немножко добавить в код. Ну типа так как в примере. Эх, не люблю усложнять код на ровном месте.

Код: Выделить всё

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);
    }
Просто удивило что если раньше подобные предупреждения просто отображались то теперь не компилируется. Надо бы детально разобраться в настройках.
принципиально беспринципный

Изображение
anonim587
Благодарил (а): 1 раз
Сообщения: 8138
Зарегистрирован: 07.06.2014 19:52

Re: Функции _s в Visual Studio

Сообщение anonim587 »

А, что за end if до сих пор не расстреливают?
Если народ, который 20 лет назад мечтал о свободе, сегодня выбирает рабство...
https://novayagazeta.ru/articles/2013/0 ... volyutsiya
Россия как "Скотный двор"
еврей Михаил Веллер - Великий последний шанс
Аватара пользователя
Бритва
Сообщения: 5016
Зарегистрирован: 20.08.2012 02:14
Где: Peterburg

Re: Функции _s в Visual Studio

Сообщение Бритва »

anonim587 писал(а):А, что за end if до сих пор не расстреливают?
Чем тебе не нравится препроцессор?

https://msdn.microsoft.com/en-us/library/ew2hz0yd.aspx
msdn.microsoft.com писал(а): 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
Сообщения: 8678
Зарегистрирован: 28.09.2011 10:46
Ник с it-ru.de: верифицирован
Где: Питер - Ганновер
Род занятий: Программизд
Интересы: бильярд, бокс, кулинария

Re: Функции _s в Visual Studio

Сообщение Simple »

anonim587 писал(а):А, что за end if до сих пор не расстреливают?
Блять, убивал бы на месте за такое.
Бритва, ты что, не в курсе, что такой код потом саппортить будет полным кошмаром?
Is this your homework, Larry? (c)
Аватара пользователя
sergNN
Сообщения: 2695
Зарегистрирован: 23.09.2011 21:50

Re: Функции _s в Visual Studio

Сообщение sergNN »

только я этого не увидел ?
... fopen берёт указатель на название файла а fopen_s ссылку .... ???????
Если йето было б так то счастливы те мужчины, только равнозначность в понимании таких как ты, отлично от реалий по совести. (c) проц
Ответить