Ругается компилятор на Ubuntu - C (СИ)
Формулировка задачи:
Написал программу на Ubuntu, попробовал скомпилировать, но компилятор выдал ошибку. Ту же самую программу переписал в Visual Studio - там все ок. В чем дело?
Сама программа:
Компилировал этой командой: 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,
#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; }
Решение задачи: «Ругается компилятор на 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
Объяснение кода листинга программы
- «gcc» — это команда для компиляции исходного кода в машинный код
- «-c» — это параметр команды «gcc», который указывает на компиляцию только исходного файла
- «-g» — это параметр команды «gcc», который указывает на добавление отладочной информации в машинный код
- «-std=c11» — это параметр команды «gcc», который указывает на использование стандарта языка C11
- «-MMD» — это параметр команды «gcc», который указывает на генерацию Makefile-зависимостей для предварительной компиляции заголовочных файлов
- «-MP» — это параметр команды «gcc», который указывает на генерацию Makefile-зависимостей для компиляции исходных файлов
- «-MF» — это параметр команды «gcc», который указывает на имя файла, содержащего зависимости для текущего исходного файла
- «-o» — это параметр команды «gcc», который указывает на имя исполняемого файла
- «build/Debug/GNU-Linux/main.o.d» — это имя файла, содержащего зависимости для исходного файла «main.c»
- «main.c» — это исходный файл, который необходимо скомпилировать
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д