Ругается компилятор на Ubuntu - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Написал программу на Ubuntu, попробовал скомпилировать, но компилятор выдал ошибку. Ту же самую программу переписал в Visual Studio - там все ок. В чем дело? Сама программа:
#include "stdio.h"
#define MAXLINE 1000 
 
int getline(char line[], int maxline);
 
int getline(char s[], int lim)
{
    int c, i;
 
    for (i = 0; i < lim - 1 && (c = getchar()) != EOF && c != '\n'; ++i)
        s[i] = c;
    if (c == '\n') {
        s[i] = c;
        ++i;
    }
    s[i] = '\0';
    return i;
}
 
void copy(char to[], char from[]);
 
void copy(char to[], char from[])
{
    int i;
 
    i = 0;
    while ((to[i] = from[i]) != '\0')
        ++i;
}
int main()
{
    int len; 
    int max; 
    char line[MAXLINE]; 
    char longest[MAXLINE]; 
    int c;
    max = 0;
    while ((len = getline(line, MAXLINE)) > 0) {
        if (line[len - 1] != '\n')
            while ((c = getchar()) != EOF && c != '\n')
                ++len;
        if (len > max) {
            max = len;
            copy(longest, line);
        }
    }
    
    if (max < MAXLINE)
        --max;
    if (max > 0) { 
        if (max > len)
            printf("The longest line is:%s ...\n", longest);
        else printf("The longest line is: %s\n", longest);
        printf("This line consists of %d characters\n", max);
    }
 
    return 0;
}
Компилировал этой командой: gcc line.c -o line Ошибка: me@c-lab-vm:~/C$ gcc line.c -o line line.c:4:5: error: conflicting types for ‘getline’ int getline(char line[], int maxline); ^ In file included from line.c:1:0: /usr/include/stdio.h:678:20: note: previous declaration of ‘getline’ was here extern _IO_ssize_t getline (char **__restrict __lineptr, ^ line.c:6:5: error: conflicting types for ‘getline’ int getline(char s[], int lim) ^ In file included from line.c:1:0: /usr/include/stdio.h:678:20: note: previous declaration of ‘getline’ was here extern _IO_ssize_t getline (char **__restrict __lineptr,

Решение задачи: «Ругается компилятор на Ubuntu»

textual
Листинг программы
gcc    -c -g -std=c11 -MMD -MP -MF "build/Debug/GNU-Linux/main.o.d" -o build/Debug/GNU-Linux/main.o main.c

Объяснение кода листинга программы

  1. «gcc» — это команда для компиляции исходного кода в машинный код
  2. «-c» — это параметр команды «gcc», который указывает на компиляцию только исходного файла
  3. «-g» — это параметр команды «gcc», который указывает на добавление отладочной информации в машинный код
  4. «-std=c11» — это параметр команды «gcc», который указывает на использование стандарта языка C11
  5. «-MMD» — это параметр команды «gcc», который указывает на генерацию Makefile-зависимостей для предварительной компиляции заголовочных файлов
  6. «-MP» — это параметр команды «gcc», который указывает на генерацию Makefile-зависимостей для компиляции исходных файлов
  7. «-MF» — это параметр команды «gcc», который указывает на имя файла, содержащего зависимости для текущего исходного файла
  8. «-o» — это параметр команды «gcc», который указывает на имя исполняемого файла
  9. «build/Debug/GNU-Linux/main.o.d» — это имя файла, содержащего зависимости для исходного файла «main.c»
  10. «main.c» — это исходный файл, который необходимо скомпилировать

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.273 из 5
Похожие ответы