首页 > 解决方案 > C - 参数名称省略?找不到错误

问题描述

所以我正在为大学编程英特尔 8253 PIT,但我认为上下文与这个问题无关。所以,我正在尝试编译我的文件,但我不断收到“参数名称省略”错误,我真的不知道为什么。

这都是在连接到大学服务器的 Minix VM 中编译的。我只是 cd 到文件夹并键入“Make”,命令是自动的。真的不知道细节。更多信息如下:

功能:

int timer_test_read_config(uint8_t timer, enum timer_status_field field) {
  uint8_t temp;
  timer_display_conf(timer,temp,field);
  return 1;
}

枚举声明:

enum timer_status_field {
    all,        /*!< configuration/status */
    initial,    /*!< timer initialization mode */
    mode,       /*!< timer counting mode */
    base        /*!< timer counting base */
};

错误信息:

lab.c:33:5: error: parameter name omitted
int timer_test_read_config(uint8_t timer, enum timer_status_field field) {

为什么我会收到错误消息?我真的不明白。我可能真的很笨,但是是的,我需要一些帮助。谢谢!

标签: chardwareintel

解决方案


下面的旧答案因对问题的编辑而无效。

现在如果没有更详细的 MCVE,这是无法回答的,因为如果您添加#include <stdint.h>. (https://godbolt.org/z/VKZmU4)。


您忘记了声明;末尾的尾随enum

enum timer_status_field {
    all,        /*!< configuration/status */
    initial,    /*!< timer initialization mode */
    mode,       /*!< timer counting mode */
    base        /*!< timer counting base */
};  /// Note added ; on this line

这编译得很好。自行编译文件中的原始枚举声明以获得更清晰的错误消息:

foo.c:6:1: error: expected identifier or ‘(’ at end of input
 }
 ^

使用 之后的内容},您的编译器试图将其解释为该类型的变量,因为enum { foo, bar } varname;它是一个有效的声明。


通过此更改,您的整个代码编译得很好(带有#include <stdint.h>),当然只是警告未声明的函数。


推荐阅读