C语言传递枚举为函数参数时出现“Parameter name omitted”错误的排查
问题解答
你遇到的“Parameter name omitted”错误,根源是函数定义的参数写法不符合C语言语法要求,具体问题有两点:
- 第一个参数
otherData只写了参数名,没有声明它的数据类型,C语言要求每个函数参数必须明确指定类型。 - 第二个参数只写了枚举类型
enum FPGA_IO_Type,没有给参数起名字——函数定义时,除了可变参数等特殊情况,每个参数都需要同时包含类型和参数名,不然编译器无法在函数体内识别和使用这个参数。
正确的函数定义示例
假设otherData的实际类型是uint32_t,你需要把函数定义改成这样:
// 补全参数类型和参数名 static void _function(uint32_t otherData, enum FPGA_IO_Type io_type) { // 函数体逻辑 }
调用示例
之后调用时就可以正常传入枚举值:
_function(0x1234, A429_RX);
额外说明:C语言的函数声明可以省略参数名(比如static void _function(uint32_t, enum FPGA_IO_Type);),但函数定义必须给每个参数都指定名字,否则编译器会报错。
内容的提问来源于stack exchange,提问作者Brandon Pieczarka
相关产品推荐
相关产品推荐

