не работает функция 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);
}