Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > компилятор ругается


Автор: Andrej78 26.9.2007, 08:26
Код


int ReadOMGFile(char *sstr)    //функция читает файл омеги
{
    //char str[80];
    FILE *fp;
    if((fp=fopen(sstr,"r"))==NULL){
        printf("error at open file.\n");
        fclose(fp);
        return 0;
    }
    fclose(fp);
    return 1;
}


почему-то компилятор стал ругаться что мол:

c:\main_control.cpp(54) : warning C4996: 'fopen' was declared deprecated
1>        c:\program files\microsoft visual studio 8\vc\include\stdio.h(234) : see declaration of 'fopen'
1>        Message: 'This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'

если добавляю _CRT_SECURE_NO_DEPRECATE; тож ворчит:

error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

причем раньше всё без проблем компилировалось... подскажите плз в чем ошибка?

Автор: WERITAS 26.9.2007, 08:36
Хм, и по-моему мнению, эта функция ничего не читает,  а только открывает и закрывает файл.
Переведите:
Цитата

This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.

И сами поймете это

В 7 версии VS начали снимать поддержку старых std-функций, давая взамен *_s - безопасные версии. А вы, уважаемый, просто задефайнили _CRT_SECURE_NO_DEPRECATE

Автор: Andrej78 26.9.2007, 08:45
ясно, спасибо. 
исправил код на новый, заработало.
сейчас функция действительно пока еще ничего не читает.

Код

FILE *stream;
errno_t err;
if( (err  = fopen_s( &stream, sstr, "r" )) !=0 ) return 2;
else return 1;


Автор: archimed7592 26.9.2007, 09:28
Цитата(Andrej78 @  26.9.2007,  08:26 Найти цитируемый пост)
если добавляю _CRT_SECURE_NO_DEPRECATE; тож ворчит:

нужно #define _CRT_SECURE_NO_DEPRECATE

Автор: nerezus 26.9.2007, 09:31
Код

#ifdef _WIN32
#pragma warning (disable:4786) // FUCK these stuppid bastards !!!
#endif
 © один препод из мгу по графике
осталось заменить циферку

Цитата

undefined reference to `fopen_s'
 А где оно лежит то? )

Автор: comcon1 26.9.2007, 10:11
Не в ответ, но по сабжу: g++ ругается варнингами на всякие fopen-ы, когда вместо cstdio подключаешь stdio.h

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)