我正在尝试使用编译附带的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
最佳答案
从错误消息来看,您的代码似乎使用了功能名称restrict
。
C99将该关键字作为关键字引入。
您需要在(非常)短期内在编译器中强制使用C90模式。在中期,您需要重命名该函数,使其与关键字不匹配。
这就是为什么标准委员会不愿意添加关键字的原因。他们破坏了现有的工作代码(但至少是一个嘈杂的破坏)。该代码在C99标准最终定稿之前于1997年开始工作并非不合理–不再编译也不无道理。 restrict
成为该标准的一部分已有近20年的历史了。