История изменений
Исправление u5er, (текущая версия) :
Для отписавшихся по поводу implicit declaration
привожу минимальный пример:
#include <stdio.h>
int main( int argc, char* argv[], char* envp[] ){
char buf[128];
printf( ">" );
fflush( stdout );
gets( buf );
printf( "buf: %s\n", buf );
printf( "End of program.\n" );
return 0;
}
$ make
cc -Wall -O2 -c -o main.o main.c
main.c: In function 'main':
main.c:11:9: warning: implicit declaration of function 'gets'; did you mean 'fgets'? [-Wimplicit-function-declaration]
11 | gets( buf );
| ^~~~
| fgets
cc -s main.o -o main
/usr/bin/ld: main.o: in function `main':
main.c:(.text.startup+0x3a): warning: the `gets' function is dangerous and should not be used.
Но это всё оффтоп. Я поинтересовался почему в процессе компиляции выводится предупреждение о том, что gets
опасный, но про другие небезопасные функции (например strncpy
) предупреждений нет, а не почему выдаётся предупреждение implicit declaration
.
Исходная версия u5er, :
Для отписавшихся по поводу implicit declaration
привожу минимальный пример:
#include <stdio.h>
int main( int argc, char* argv[], char* envp[] ){
char buf[128];
printf( ">" );
fflush( stdout );
gets( buf );
printf( "buf: %s\n", buf );
printf( "End of program.\n" );
return 0;
}
$ make
cc -Wall -O2 -c -o main.o main.c
main.c: In function 'main':
main.c:11:9: warning: implicit declaration of function 'gets'; did you mean 'fgets'? [-Wimplicit-function-declaration]
11 | gets( buf );
| ^~~~
| fgets
cc -s main.o -o main
/usr/bin/ld: main.o: in function `main':
main.c:(.text.startup+0x3a): warning: the `gets' function is dangerous and should not be used.
Но это всё оффтоп. Я поинтересовался почему в процессе компиляции выводится предупреждение о том, что gets
, но про другие небезопасные функции (например strncpy
) предупреждений нет, а не почему выдаётся предупреждение implicit declaration
.