конфликт 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;
}

Когда я запускаю этот код, я получаю следующую ошибку компиляции:

Ошибка: конфликтующие типы для atof

Я использую компилятор CodeBlocks + mingw c

Изменить (в ответ на комментарий):

Я хочу загрузить один аргумент и может вернуть значение double, atof работает без stdlib.h, но не могу определить getline


person Daniel Kuchta    schedule 06.03.2015    source источник
comment
Чего вы пытаетесь достичь с помощью этой декларации atof?   -  person TartanLlama    schedule 06.03.2015


Ответы (2)


Вам не нужно объявлять atof, если вы включаете stdlib. Он объявлен в stdlib. Определение atof в stdlib — 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.

person chmike    schedule 06.03.2015

Объявление atof() в <stdlib.h>:

double atof (const char* str);

А вы декларируете это как

double atof(char []);

Два объявления различны, отсюда и ошибка.

person shauryachats    schedule 06.03.2015