C 理解void指针语句中的问题

C 理解void指针语句中的问题,c,C,我正在搜索MODBUS库。我找到了一个,但我无法理解这个宏在做什么,这意味着什么 #define __UNUSED(x) ( ( void ) ( (x) == (x) ) ) //what this macro doing** int target_initialise( void * Target ) { __UNUSED( Target ); return 0; } void * target_alloc( void * Target, unsigned

我正在搜索MODBUS库。我找到了一个,但我无法理解这个宏在做什么,这意味着什么

#define __UNUSED(x)     ( ( void ) ( (x) == (x) ) ) //what this macro doing**


int
target_initialise( void * Target ) {

    __UNUSED( Target );

    return 0;
}


void *
target_alloc( void * Target, unsigned int Bytes ) {

    __UNUSED( Target );
    __UNUSED( Bytes );

    return NULL;
}


void
target_free( void * Target, void * Data ) {

    __UNUSED( Target );
    __UNUSED( Data );
}
宏将扩展为

int
target_initialise( void * Target ) {

    (void) (Target == Target);

    return 0;
}
它用于消除编译器警告。例如,如果您使用 使用gcc并使用
-Wall
,编译器会警告很多事情,例如 示例未使用的变量。因此,在
target\u初始化
中,变量
target
为 未使用,编译器将对此发出警告,但使用宏 编译器将保持沉默


我不知道代码为什么这样做。

您使用的是哪个库?我对这个看起来像占位符的代码有很好的经验。也就是说,函数什么都不做,稍后或在其他情况下,它们将被函数代码替换,而
\u UNUSED
宏用于防止编译器抱怨没有使用参数。或者可能是因为某种原因必须定义函数,但在这个版本的驱动程序中实际上并不需要这些函数,因此它们是微不足道的实现。