在编译代码时发生冲突

时间:2015-03-06 09:04:45

标签: c mingw atof

我刚开始使用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

2 个答案:

答案 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 []);

这两个声明是不同,因此是错误。