не работает функция get_current_dir_name на языке программирования Си

Помогите пожалуйста , мне нужно определить полный путь до исполняемого файла программы . В интернете нашел , что это можно реализовать с помощью ф-ции get_current_dir_name (тут нашел - http://all-ht.ru/inf/prog/c/func/get_current_dir_name.html) , но представленный код не работает введите сюда описание изображения

Помогите пожалуйста исправить эту ошибку .

    #include <unistd.h>  //Для get_current_dir_name
#include <stdio.h>   //Для printf

int main (void)
{    
   // Переменная, в которую будет помещен указатель 
   // на область памяти с путем к текущей директории 
   char *DirName;

   // Определяем путь к  текущей директории 
   DirName = get_current_dir_name ();

   // Выводим путь в консоль
   printf ("Текущая директория: %s\n" ,DirName);

   return 0;
}

Ответы (1 шт):

Автор решения: Yaroslav

Функция get_current_dir_name() определена только если есть определение _GNU_SOURCE

Нужно добавить

#define _GNU_SOURCE  
#include <unistd.h>

и а так как get_current_dir_name() выделяет память, нужно ее после использования высвободить.

free(DirName);

не все компиляторы поддерживают функцию get_current_dir_name(), можно воспользоватся другими функциями getcwd() например.

char * dir_name = NULL;
dir_name = getcwd(NULL, 0);
if (dir_name != NULL) {
    printf("Current dir : %s\n", dir_name);
    free(dir_name);
}
→ Ссылка