Изучаю Си в Линуксе по книге Ритчи Си

программирование Linux Линукс Си

Переписал листинг, перепроверил, вроде бы все правильно:

#include <stdio.h>

#define MAXLINE 1000 /* максимальный размер вводимой строки */

int max;
char line[MAXLINE];
char longest[MAXLINE];

int getline(void);
void copy (void);

/* печать самой длиной строки */
main()
{
int len; /* длина текущей строки */
extern int max; /* длина максимальной из просмотренных строк */
extern char longest[];
max = 0;
while ((len = getline()) > 0)
if ( len > max ) {
max = len;
copy ();
}
if ( max > 0 ) /* была ли хоть строка? */
printf ( "%s", longest );
return 0;
}

/* getline; читает строку в s, возвращает длину */
int getline(void)
{
int c, i;
extern char line[];
for ( i = 0; i < MAXLINE-1 && ( c = getchar ( ) ) != EOF && c != '\n'; ++i )
line[i] = c;
if ( c == '\n' ); {
line[i] = c;
++i;
}
line[i] = '\0';
return i;
}

/* copy: копирует из 'from' в 'to'; to достаточно большой */
void copy ( void)
{
int i;
extern char line[], longest[];
i = 0;
while ( ( longest[i] = line[i] ) != '\0' )
++i;
}

Но мне выдает ошибку
cc ./supprog.c
./supprog.c:9:5: error: conflicting types for ‘getline’
/usr/include/stdio.h:675:20: note: previous declaration of ‘getline’ was here
./supprog.c:30:5: error: conflicting types for ‘getline’
/usr/include/stdio.h:675:20: note: previous declaration of ‘getline’ was here

Не пойму где мог ошибться.
Ответы:
переименуй свою функцию getline.
такая уже существует и определена в stdio.h
> conflicting types for ‘getline’
> /usr/include/stdio.h:675:20: note: previous declaration of ‘getline’ was here
Конфликт 'getline'
getline объявлена в /usr/include/stdio.h на 675 строке.


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.