我想在 C 代码中编写宏来释放许多指针,如下所示:
FREE(ptr1, ptr2, ptr3, ptr4, ptrx);
对我来说,这比
FREE(ptr1);
FREE(ptr2);
FREE(ptr3);
FREE(ptr4);
FREE(ptrx);
提前致谢
问候,
使用具有可变数量函数参数的函数。标题:stdarg.h.
我对这个解决方案感到有点乐趣。
#define FREE( ... ) Free( &free_stop , __VA_ARGS__ , &free_stop )
//takes any number of pointer arguments,(at least one )( can also take NULL which is handled by free )
int free_stop ;
void Free( void* point , ... )
{
if( !point )
return ;
va_list list ;
va_start( list , point ) ;
void* p = va_arg( list , void* ) ;
while( p != point )
{
free( p ) ;
p = va_arg( list , void* ) ;
}
va_end( list ) ;
}
Usage:
FREE( ptr1 , ptr2 , ptr3 ) ; //don't have to NULL terminate
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)