我正在尝试编译一个我从教科书中逐字复制的程序,但是我收到以下错误:
maxline.c:4:5: error: conflicting types for ‘getline’
/usr/include/stdio.h:675:20: note: previous declaration of ‘getline’ was here
maxline.c:26:5: error: conflicting types for ‘getline’
/usr/include/stdio.h:675:20: note: previous declaration of ‘getline’ was here
以下是有问题的行:
4 int getline(char line[], int maxline);
26 int getline(char s[], int lim)
我错过了一些非常明显的东西吗?
答案 0 :(得分:8)
getline
在stdio.h
中声明。它没有由ISO C标准指定,但它被指定为扩展,最初由GNU和后来由POSIX指定。 man getline
有关预定义getline
功能的详细信息,请参阅official POSIX description。
你已经使用相同的名称声明了自己的函数,这显然与stdio.h
中的声明冲突,它可能看起来像这样(省略restrict
限定符以节省空间):
ssize_t getline(char **lineptr, size_t *n, FILE *stream);
为您的函数使用不同的名称(get_line
可以使用),或者使用使stdio.h
getline
版-std=c99 -pedantic
版本不可见的选项编译您的代码 - 可能类似于{{ 1}}。