关于DECONST
#define DE_CONST(konst, var) do { union { const void *k; void *v; } _u; _u.k = konst; var = _u.v; } while (0)
#define __UNCONST(a) ((void *)(unsigned long)(const void *)(a))
颚的神啊……
共 2 篇文章。
#define DE_CONST(konst, var) do { union { const void *k; void *v; } _u; _u.k = konst; var = _u.v; } while (0)
#define __UNCONST(a) ((void *)(unsigned long)(const void *)(a))
颚的神啊……
今天 renzhen 同学问起为什么很多宏都定义为 do { something… } while(0),我也顺便温习了一下。
简而言之:如果希望宏表现的和函数接近,就需要这样做。