Неявное объявление базового имени функции в Linux

я использую функцию basename() в своем коде. Где я в том числе

#include <unistd.h>

и когда я компилирую этот код с флагом -Wall, он показывает

следующее предупреждение

warning: implicit declaration of function ‘basename’

если я пишу его объявление в своем коде

char * basename (const char *fname);

тогда он не показывает это предупреждение

почему это происходит.?


person Jeegar Patel    schedule 17.08.2011    source источник


Ответы (2)


Вам нужно включить <libgen.h>.

Стандарт говорит, что это libgen.h, kernel.org делает то же самое.

person cnicutar    schedule 17.08.2011
comment
это доступно в стандартной библиотеке.? я имею в виду, на каждой платформе это будет работать .. ?? - person Jeegar Patel; 17.08.2011

Если вы посмотрите на man страницу для basename:

man 3 basename

Вы увидите, что вам нужно включить libgen.h, чтобы получить прототип для basename (и аналогичной функции dirname):

#include <libgen.h>
person Sean Bright    schedule 17.08.2011