我已经编写了自己的断言调试。
#define ASSERT_EQUALS(a,b) \
do { \
if ((a)!=(b)) \
{ \
printf(". ASSERT_EQUALS (%s:%d) %d!=%d\n",__FUNCTION__,__LINE__,a,b); \
} \
} while (0)
然而它只与整数类型兼容。有没有办法可以改变这个,所以我也可以支持float / double类型?
感谢。
答案 0 :(得分:1)
也许你应该把它们打印成花车。
#define ASSERT_EQUALS(a, b) \
do { \
if ((a)!=(b)) { \
printf(". ASSERT_EQUALS (%s:%d) %f!=%f\n",__FUNCTION__,__LINE__,(float)(a),(float)(b)); \
} \
} while (0)
整数看起来很糟糕,例如1
会显示为1.00000
,但它适用于这两种类型。
答案 1 :(得分:0)
将它们打印为字符串;这适用于所有类型并打印表达式的实际文本,而不仅仅是它们的值:
#define ASSERT_EQUALS(a,b) \
do { \
if ((a)!=(b)) \
{ \
printf(". ASSERT_EQUALS (%s:%d) %s!=%s\n",__FUNCTION__,__LINE__, #a,#b); \
} \
} while (0)
答案 2 :(得分:-1)
使用可变参数宏和vprintf。查看C库中的assert.h