- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
#define CHAINFREE_STATIC_DAT(a, field) {\
ptr=(typeof(ptr))&(a);\
if(((typeof(&(a)))(ptr))->field)\
free(((typeof(&(a)))(ptr))->field);\
ptr=(typeof(ptr))(((typeof(&a))(ptr))->next);\
if(ptr) {\
while(((typeof(&(a)))(ptr))->next) {\
if(((typeof(&(a)))(ptr))->field)\
free(((typeof(&(a)))(ptr))->field);\
ptr=(typeof(ptr))(((typeof(&a))(ptr))->next);\
free(((typeof(&(a)))(ptr))->prev);\
}\
if(((typeof(&(a)))(ptr))->field)\
free(((typeof(&(a)))(ptr))->field);\
free(ptr);\
}\
memset(&(a), 0, sizeof(a));\
}
zitzy 22.08.2009 16:30 # 0
TWINc 23.08.2009 09:02 # 0
numlock 24.08.2009 06:58 # 0
inkanus-gray 04.06.2016 14:49 # 0
Говногость 25.08.2009 15:13 # 0
Да и нет typeof в С. Помоему только в GNU C++.
guest 30.08.2009 10:23 # 0
и откуда это чудо?
xaionaro 22.09.2009 06:13 # 0
guest 27.08.2009 19:15 # 0
ElWray 11.09.2009 19:01 # 0
xaionaro 22.09.2009 06:25 # 0
Это жутко нечитаемый кусок код, но функцию он свою выполняет как надо. Видел в одном месте использование "макро-функции" в "макро-функциях", притом что они размером порядком больше этой, вот там действительно катастрофа; а тут, IMHO, достаточно просто попросить причесать немного код)
guest 23.09.2009 11:51 # +2
guest 30.10.2009 21:09 # +1
guest 10.11.2009 23:29 # +1