理解void指针语句的问题

问题描述 投票:-1回答:1

我正在寻找一个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 );
}
c
1个回答
1
投票

宏扩展到

int
target_initialise( void * Target ) {

    (void) (Target == Target);

    return 0;
}

它用于使编译器警告静音。例如,如果您使用gcc编译并使用-Wall,那么编译器会警告很多事情,例如未使用的变量。所以在target_initialise中没有使用变量Target,编译器会对此发出警告,但使用宏编译器会保持沉默。

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

© www.soinside.com 2019 - 2024. All rights reserved.