【C/C++】assert实现

发布时间 2023-04-14 15:18:54作者: 壹点灵异

 

#define MLA_ASSERT(expr)    (void)((!!(expr)) || (printf("mla assert fail: \"%s\" @ %s, %u", #expr, __FILENAME__, __LINE__), printf("\r\n"), abort()
// usage:
MLA_ASSERT(pointer != NULL)

#define MLA_ASSERT(expr)    (void)((!!(expr)) && (printf("mla assert fail: \"%s\" @ %s, %u", #expr, __FILENAME__, __LINE__), printf("\r\n"), abort()
// usage:
MLA_ASSERT(pointer == NULL)

// 返回值是最后一个参数,只会是0或1
#define MLA_ASSERT(expr)    (int)((!!(expr)) || (printf("mla assert fail: \"%s\" @ %s, %u", #expr, __FILENAME__, __LINE__), printf("\r\n"), 0))
// usage:
if (!MLA_ASSERT(pointer != NULL)) {
    return;
}

#define MLA_ASSERT(expr)    (int)((!!(expr)) && (printf("mla assert fail: \"%s\" @ %s, %u", #expr, __FILENAME__, __LINE__), printf("\r\n"), 0))
// usage:
if (!MLA_ASSERT(pointer == NULL)) {
    return;
}