Неявна декларация на базово име на функция в 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