Ошибка при компиляции в gcc, ожидаемый идентификатор '(' перед 'double' - PullRequest
0 голосов
/ 22 ноября 2018

Я пытаюсь скомпилировать прикрепленный код C с помощью

gcc -Wall -o nesta.o nesta.c

, но я получаю следующееошибка:

nesta.c: At top level:
nesta.c:1004:15: error: expected identifier or ‘(’ before ‘double’
void restrict(double *coarse, double *fine,int imaxc,int jmaxc,int imaxf,int jmaxf)

В качестве примечания, это старая программа на C, которая работала еще в 1997 году.

nesta.c praxis.h

1 Ответ

0 голосов
/ 22 ноября 2018

Ваш код, по-видимому, использует имя функции restrict, судя по сообщению об ошибке.

C99 представил это в качестве ключевого слова.

Вам потребуется включить режим C90 в вашемкомпилятор в (очень) короткий срок;в среднесрочной перспективе вам необходимо переименовать функцию, чтобы она не соответствовала ключевому слову.

Именно поэтому комитет по стандартам не хочет добавлять ключевые слова;они нарушают существующий рабочий код (но по крайней мере это шумная поломка).Весьма разумно, что код работал в 1997 году, до того, как стандарт C99 был доработан - также не исключено, что он больше не компилируется;restrict является частью стандарта уже почти 20 лет.

...