理解void指针语句的问题

时间:2018-03-05 04:01:49

标签: c

我正在寻找一个MODBUS lib。我找到了一个,但我无法理解这个宏在做什么以及这意味着什么

#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 );
}

1 个答案:

答案 0 :(得分:1)

宏扩展为

int
target_initialise( void * Target ) {

    (void) (Target == Target);

    return 0;
}

并且它用于使编译器警告静音。如果你用例如编译 使用gcc并使用-Wall,编译器会警告很多事情 示例未使用的变量因此,在target_initialise变量Target中 不使用,编译器会警告,但使用宏 编译器会保持沉默。

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