【问题标题】:atof conflict while compiling code编译代码时atof冲突
【发布时间】:2015-03-06 09:04:45
【问题描述】:

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

【问题讨论】:

  • 你想通过 atof 声明来完成什么?

标签: c mingw atof


【解决方案1】:

如果包含 stdlib,则无需声明 atof。它在标准库中声明。 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 中声明了。

【讨论】:

    【解决方案2】:

    atof()&lt;stdlib.h&gt;中的声明是:

    double atof (const char* str);
    

    你将它声明为

    double atof(char []);
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-05
      • 1970-01-01
      • 2017-11-07
      • 2017-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-01
      相关资源
      最近更新 更多