【发布时间】:2018-06-10 17:51:30
【问题描述】:
我目前在 c 中遇到了一些关于 getline() 的问题。 我知道这不是标准的 C 函数,但是根据我在网上看到的内容,我正在使用适当的资源。
两个都有:
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
但是我仍然有编译问题,它给了我这个输出:
main.c: In function 'read-file':
main.c:46:17: warning: implicit declaration of function 'getline' [-Wimplicit-function-declaration]
C:\Users\Miguel\AppData\Local\Temp\cc6aYESe.o:main.c:(.text+0x85): undefined reference to `getline'
collect2.exe: error: ld returned 1 exit status
我似乎无法弄清楚出了什么问题,我已经看到了几个这样的问题,但是似乎没有解决方案适用。
【问题讨论】:
-
你在一台 Windows 机器上;您使用的是 MinGW 还是 Cygwin 或其他东西?如果您使用的是 MinGW,它可能没有被定义——它是 Windows 的最小 GNU。您可以尝试请求 POSIX 支持(例如
#define _XOPEN_SOURCE 700),但如果_GNU_SOURCE不起作用,那么 POSIX 也可能不会。我不经常建议这样做,但尝试禁用警告(更改编译器选项),或在代码中包含声明(ssize_t getline(char ** restrict linep, size_t * restrict linecapp, FILE * restrict stream);),并查看它是否链接。可能不会。 -
事实上,如果您收到“未定义对
getline的引用”消息,则说明您的环境中没有定义该函数。您需要提供自己的实现——编写起来并不难。或者您可以随时联系我;查看我的个人资料。
标签: c compiler-errors getline