C中的多参数函数,其中从不使用第二个参数

时间:2016-12-29 11:33:49

标签: c gcc

我有两个功能:

int hash64(int key0, int key1);
int hash32(int key0, int UNUSED_ARG);

和带有函数指针的结构

int (*hash)(int key0, int key1);

因此,hash32仅使用key0,但我需要以这种方式声明它以便将其分配给函数指针。但是当我这样做时,GCC显然抱怨很多。如果它是单参数函数,我们可以做

int hash1(int key);
int hash2(void);

或者其他什么,但显然int hash32(int key0, void)根据GCC不是有效的语法。那么,声明hash32的正确方法是什么?

2 个答案:

答案 0 :(得分:5)

您应该始终定义与您要使用函数的指针类型匹配的函数。

如果GCC抱怨未使用的参数,你可以用

将其静音
int hash1(int key0, int key1)
{
  (void)key1;
  ...

答案 1 :(得分:2)

声明如下所示

>>> x = [1, 2, 20, 6, 210]
>>> sorted(set(x), key=x.index)
[1, 2, 20, 6, 210]

并在函数定义中

int hash32(int key0, int dummy);