gpt4 book ai didi

c - c 中对 `getline' 的 undefined reference

转载 作者:太空狗 更新时间:2023-10-29 16:33:53 25 4
gpt4 key购买 nike

我正在学习在 C 编程中使用 getline 并尝试了 http://crasseux.com/books/ctutorial/getline.html 中的代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int atgc, char *argv[])
{
int bytes_read = 1;
int nbytes = 10;
char *my_string;

my_string = (char *)malloc(nbytes+1);

puts("Please enter a line of text");

bytes_read = getline(&my_string, &nbytes, stdin);

if (bytes_read == -1)
{
puts ("ERROR!");
}
else
{
puts ("You typed:");
puts (my_string);
}

return 0;
}

但是,问题是编译器不断返回这样的错误:undefined reference to 'getline'。你能告诉我问题是什么吗?谢谢!

我正在使用 Win7 64 位 + Eclipse Indigo + MinGW

最佳答案

其他答案已经涵盖了大部分内容,但还有几个问题。一、 getline() 不在 C 标准库中,而是 POSIX 2008 扩展。通常,它可用于 POSIX 兼容的编译器,因为宏 _POSIX_C_SOURCE 将使用适当的值定义。您可能使用了 getline() 之前的旧编译器是标准化的,在这种情况下这是一个 GNU 扩展,你必须 #define _GNU_SOURCE之前#include <stdio.h>启用它,并且必须使用 GNU 兼容的编译器,例如 gcc。

此外,nbytes应该有类型 size_t , 不是 int .至少在我的系统上,这些大小不同,size_t更长,并使用 int*而不是 size_t*可能会产生严重的后果(并且也不会使用默认的 gcc 设置进行编译)。有关详细信息,请参阅 getline 手册页 (http://linux.die.net/man/3/getline)。

进行了更改后,您的程序可以在我的系统上正常编译和运行。

关于c - c 中对 `getline' 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13112784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com