在gcc中编译时出错,预期标识符'('在'double'之前

时间:2018-11-22 19:21:40

标签: c gcc include

我正在尝试使用

编译随附的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 :(得分:1)

从错误消息来看,您的代码似乎使用了函数名restrict

C99将该关键字作为关键字引入。

(非常)短期内,您需要在编译器中强制使用C90模式;在中期,您需要重命名该函数,以使其与关键字不匹配。

这就是为什么标准委员会不愿意添加关键字的原因;他们破坏了现有的工作代码(但至少是一个嘈杂的破坏)。该代码在C99标准最终定稿之前于1997年开始工作并不是不合理的-不再编译也同样不合理。 restrict成为该标准的一部分已有近20年了。