c - 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) {
为什么我会收到错误消息?我真的不明白。我可能真的很笨,但是是的,我需要一些帮助。谢谢!
解决方案
下面的旧答案因对问题的编辑而无效。
现在如果没有更详细的 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>
),当然只是警告未声明的函数。
推荐阅读
- node.js - 运行旧版本 JointsWP
- sass - options 具有未知属性“prependData”。这些属性是有效的:
- android - 无法覆盖 Kotlin(Volley)中的 getParam
- python - 通过在列中创建列名行来转换 padnas 数据框
- swift - 尝试从协议中调用类方法(Swift)
- python - Python Sockets 发送 Uint16 和 Uint32
- apache-kafka - 使用 Kafka Connect 和 Debezium 将表复制到 Kafka 时的性能问题
- javascript - 如何在javascript中从另一个数组中减去一个数组
- php - Cloudinary 视频上传错误 Entity too large up to 300MB
- gitlab - 如何保护gitlab中的标签不被其他成员删除?