C 理解void指针语句中的问题
我正在搜索MODBUS库。我找到了一个,但我无法理解这个宏在做什么,这意味着什么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
#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
宏用于防止编译器抱怨没有使用参数。或者可能是因为某种原因必须定义函数,但在这个版本的驱动程序中实际上并不需要这些函数,因此它们是微不足道的实现。