1

我刚刚开始了我的 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;
}

当我运行此代码时,出现以下编译错误:

错误:“atof”的类型冲突

我正在使用 CodeBlocks + mingw c 编译器

编辑(回应评论):

我想下载一个参数并可能返回一个double值,atof没有stdlib.h,但无法定义getline

4

2 回答 2

1

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 中声明了。

于 2015-03-06T09:12:18.720 回答
0

atof()in的声明<stdlib.h>是:

double atof (const char* str);

你将它声明为

double atof(char []);

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

于 2015-03-06T09:11:43.100 回答