我有一堆 printf 调试辅助宏,如果不指定类型,那会很酷,您可以做些什么来允许 c 中的宏重载(如果在 gcc 4.3 中可用,则可以是 gcc 特定的)。我想也许是 typeof 但显然这不起作用。
示例宏(我还有一些 ascii 终端颜色的东西,我记不清了)
#ifdef _DEBUG
#define DPRINT_INT(x) printf("int %s is equal to %i at line %i",#x,x,__LINE__);
.
.
.
#else
#define DPRINT_INT(x)
.
.
.
#endif
尝试这个;它使用 gcc 的 __builtin 方法,并尽可能自动为您确定类型,并生成一个简单的 DEBUG 宏,您无需指定类型。当然,你可以将 typeof(x) 与 float 等进行比较。
#define DEBUG(x) \
({ \
if (__builtin_types_compatible_p (typeof (x), int)) \
fprintf(stderr,"%d\n",x); \
else if (__builtin_types_compatible_p (typeof (x), char)) \
fprintf(stderr,"%c\n",x); \
else if (__builtin_types_compatible_p (typeof (x), char[])) \
fprintf(stderr,"%s\n",x); \
else \
fprintf(stderr,"unknown type\n"); \
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)