Ошибка "expected ‘;’, ‘,’ or ‘)’ before numeric constant" при компиляции кода - C (СИ)
Формулировка задачи:
Здравствуйте! Просьба помочь разобраться с ошибкой.
Изучаю Си по книге Б. Кернигана и Д. Ритчи "Язык программирования Си". Переписал очередной пример из книги, но при попытке скомпилировать код выходит сообщение об ошибке:
Сам код:
user@user-mint ~/progs $ gcc maxline.c maxline.c:2:17: error: expected ‘;’, ‘,’ or ‘)’ before numeric constant #define MAXLINE 1000 /*максимальный размер вводимой строки*/ ^ maxline.c:4:34: note: in expansion of macro ‘MAXLINE’ int getline_max(char line[], int MAXLINE);
#include <stdio.h> #define MAXLINE 1000 /*максимальный размер вводимой строки*/ int getline_max(char line[], int MAXLINE); void copy_max(char to[], char from[]); main() { int len; /* длина текущей строки */ int max; /* длина максимальной из просмотренных строк */ char line[MAXLINE]; /* массив текущей строки */ char longest[MAXLINE]; /* массив самой длинной строки */ max = 0; while ((len = getline_max(line, MAXLINE)) > 0) if (len > max){ max = len; copy_max(longest, line); } if (max > 0) /* была ли хоть одна строка? */ printf("%s", longest); return 0; } /* getline: читает строку в s, возвращает длину */ int getline_max(char s[], int lim) { int c, i; for (i = 0; i < lim-1 && ((c = getchar()) != '\n') && c != EOF; ++i) s[i] = c; if (c == '\n') { s[i] = c; ++i; } s[i] = '\0'; return i; } /* copy: копирует из 'from' в 'to'; to достаточно большой */ void copy_max(char to[], char from[]) { int i; i = 0; while ((to[i] = from[i]) != '\0') ++i; }
Решение задачи: «Ошибка "expected ‘;’, ‘,’ or ‘)’ before numeric constant" при компиляции кода»
textual
Листинг программы
int getline_max(char line[], int 1000);
Объяснение кода листинга программы
В данном коде реализуется функция getline_max
, которая принимает два аргумента: строку line
и целое число 1000
. Функция предназначена для определения максимальной длины строки, которую можно прочитать с помощью функции getline
без блокировки.
Код функции следующий:
int getline_max(char line[], int 1000);
- В первой строке кода функции объявляется переменная
i
со значением 0. - Затем в цикле
while
происходит чтение строки с помощью функцииgetline
в переменнуюline
. - Если длина строки больше 1000 символов, то цикл прерывается и функция возвращает значение переменной
i
, иначе цикл продолжается. - В конце функции возвращается значение переменной
i
с добавлением 1. Ошибкаexpected ‘;’, ‘,’ or ‘)’ before numeric constant
указывает на то, что в коде присутствует синтаксическая ошибка перед числовым значением. В данном случае, ошибка возникает из-за того, что в объявлении функции отсутствует точка с запятой после имени функции и аргументов.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д