【问题标题】:Error when compiling in gcc, expected identifier '(' before 'double'在 gcc 中编译时出错,预期标识符 '(' 在 'double' 之前
【发布时间】:2018-11-22 19:21:39
【问题描述】:

我正在尝试用

编译附加的 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

【问题讨论】:

  • 请直接在此处显示您的代码,作为minimal reproducible example
  • 您未在 Google 云端硬盘中授予访问您希望我们帮助您的来源的权限。这是行不通的。请将来源(的子集)复制到问题中。但是,当您创建 MCVE 时,您很可能也解决了您的问题。

标签: c gcc include


【解决方案1】:

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

C99 将其作为关键字引入。

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

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

【讨论】:

    猜你喜欢
    • 2018-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多