1

私は C プログラミングの旅を始めたばかりです。ライブラリの競合に問題があります。以下の私のサンプルコードを見つけてください。

#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 コンパイラを使用しています

編集(コメントに応じて):

引数を 1 つダウンロードしたいのですが、double値を返す可能性があり、atofなくても機能しstdlib.hますが、定義できませんgetline

4

2 に答える 2

1

atofstdlib を含める場合は宣言する必要はありません。stdlib で宣言されています。stdlib の atof の定義はdouble atof(const char *nptr). それはあなたのものとは異なり、これが競合を説明しています。

getline は stdio.h で定義されており、次の 3 つの引数が必要ですssize_t getline(char **lineptr, size_t *n, FILE *stream)。getline を使用して標準入力から読み取ることはできません。を使用する必要がありますgetline(line, MAXLINE, stdin)。また、stdio.h で既に宣言されているため、main で宣言しないでください。

于 2015-03-06T09:12:18.720 に答える
0

atof()inの宣言<stdlib.h>は次のとおりです。

double atof (const char* str);

そして、あなたはそれを次のように宣言しています

double atof(char []);

2 つの宣言が異なるため、エラーが発生します。

于 2015-03-06T09:11:43.100 に答える