为什么我在Linux中使用函数grantpt?

时间:2015-01-07 12:38:51

标签: c shared-libraries

我想在我的程序中使用函数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;
}

非常感谢!

1 个答案:

答案 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()