我想在我的程序中使用函数grantpt。我包含其头文件<stdlib.h>
,但编译器仍然给我warning: implicit declaration of grantpt
,这意味着它无法在stdlib.h
中找到声明。我grep
头文件并找到声明:
stdlib.h:920:extern int grantpt (int __fd) __THROW;
我的glibc版本是2.17,官方手册说自2.1版以来就包含了这个功能。
这是我的测试程序:
#include <stdio.h>
#include <stdlib.h>
typedef unsigned long u_l;
int main(){
int errno = grantpt(1);
printf("errno = %d\n", errno);
return 0;
}
非常感谢!
答案 0 :(得分:2)
#define _XOPEN_SOURCE
#include <stdlib.h>
#include <stdio.h>
//#include<sys/poll.h>
typedef unsigned long u_l;
int main()
{
int errno = grantpt(1);
printf("errno = %d\n", errno);
return 0;
}
此代码在没有该警告的情况下编译
请参阅手册页http://linux.die.net/man/3/grantpt清楚地说明您需要先定义_XOPEN_SOURCE
,然后才能stdlib.h
访问grantpt()