我刚开始使用C编程。我有一个lib冲突的问题。请在下面找到我的示例代码。
#include <stdio.h>
#include <stdlib.h>
#define MAXLINE 100
//int getline declaration is here (removed for simplicity)
int main()
{
double sum, atof(char []);
char line[MAXLINE];
int getline(char line[], int max);
sum=0;
while (getline(line,MAXLINE)>0)
printf("\t%g\n", sum += atof(line));
40mi return 0;
}
当我运行此代码时,我收到以下编译错误:
错误:&#39; atof&#39;
的类型冲突
我正在使用CodeBlocks + mingw c编译器
修改(以回应评论):
我想下载一个参数,可能会返回double
值,atof
无法使用stdlib.h
,但无法定义getline
答案 0 :(得分:1)
如果包含stdlib,则不需要声明atof
。它在stdlib中声明。 stdlib中atof的定义是double atof(const char *nptr)
。这与你的不同,这解释了冲突。
getline在stdio.h中定义,并且需要三个参数:ssize_t getline(char **lineptr, size_t *n, FILE *stream)
。您无法像使用getline那样从标准输入读取数据。你必须使用getline(line, MAXLINE, stdin)
。并且不要在main中声明它,因为它已经在stdio.h中声明了。
答案 1 :(得分:0)
atof()
中<stdlib.h>
的声明是:
double atof (const char* str);
你宣称它是
double atof(char []);
这两个声明是不同,因此是错误。