App*_*ker 4 c pointers casting void void-pointers
假设我有这个函数,它是一些gui工具包的一部分:
typedef struct _My_Struct My_Struct;
/* struct ... */
void paint_handler( void* data )
{
if ( IS_MY_STRUCT(data) ) /* <-- can I do something like this? */
{
My_Struct* str = (My_Struct*) data;
}
}
/* in main() */
My_Struct s;
signal_connect( SIGNAL_PAINT, &paint_handler, (void*) &s ); /* sent s as a void* */
Run Code Online (Sandbox Code Playgroud)
由于paint_handler也将由GUI工具包的主循环与其他参数一起调用,因此我不能总是确定我接收的参数将始终是指针s.
我可以IS_MY_STRUCT在paint_handler函数中执行某些操作来检查我收到的参数是否可以安全地返回到My_Struct*?