//#define _GNU_SOURCE
#include
#include
#include
int main ( int argc, char *argv[] ){
char* cwd=get_current_dir_name();
printf("%s$",cwd);
free(cwd);
return EXIT_SUCCESS;
}
编译时会出现get_current_dir_name返回值是int的警告:
warning: initialization makes pointer from integer without a cast
解决方法是在程序第一行加入#define _GNU_SOURCE,因为这个函数是GNU扩展,所以要加这个宏
虽然这个函数比getcwd好用,但它并不符合POSIX标准
getcwd,以下是在线文档的EXAMPLES的内容
#include
#include
#include
int main ( int argc, char *argv[] ){
long size;
char *buf;
char* cwd;
size=pathconf(".",_PC_PATH_MAX);
if((buf=(char *)malloc((size_t)size))!=NULL)
cwd=getcwd(buf,(size_t)size);
printf("%s$",cwd);
return EXIT_SUCCESS;
}