Неявное объявление базового имени функции в linux - PullRequest
2 голосов
/ 17 августа 2011

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

#include <unistd.h>

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

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

warning: implicit declaration of function ‘basename’

если я пишу свою декларацию в моем коде

char * basename (const char *fname);

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

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

Ответы [ 2 ]

5 голосов
/ 17 августа 2011

Вам необходимо включить <libgen.h>.

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

4 голосов
/ 17 августа 2011

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

man 3 basename

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

#include <libgen.h>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...