LINUX.ORG.RU

История изменений

Исправление 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.