错误:预期')'在'n'之前

时间:2012-01-22 13:31:12

标签: c

我收到此编译错误。我尝试了一些故障排除步骤,例如将def.h文件重命名为defdif.h,以防止包含系统文件。但是这个错误不会发生。任何人都有一个想法。

core/def.c: error: expected ')' before 'n'
core/def.c: error: expected ')' before 'n

def.c文件

u16_t
lwip_htons(u16_t n)
  {
   return( ((n & 0xff) << 8) | ((n & 0xff00) >> 8) );
  }


u32_t
lwip_htonl(u32_t n)
{
return ((n & 0xff) << 24) |
   ((n & 0xff00) << 8) |
   ((n & 0xff0000UL) >> 8) |
   ((n & 0xff000000UL) >> 24);
}

1 个答案:

答案 0 :(得分:3)

错误如:

u16_t lwip_htons (u16_t n)
core/def.c: error: expected ')' before 'n'

几乎始终与相关,因为u16_t类型未在您使用它的位置定义。

例如,在gcc

int fn (u16_t n) { return n; }
int main (void) { return 0; }

给你:

qq.c:1: error: expected ')' before 'n'

您描述的确切错误消息。当我将其更改为:

时,该错误消失
typedef int u16_t;
int fn (u16_t n) { return n; }
int main (void) { return 0; }

因此,可以合理地安全地假设未定义类型(您可以通过在lwip_htons之前临时定义它来测试它,就像我一样)。

现在我不确定你在你的代码库上造成了什么可怕的变形,但是,如果它是我正在考虑的包,则在arch/cc.h中定义它们。确保链接包含在链接中。

如果不是我认为的那个,你就必须自己去寻找typedef