Skip to content

Jaly314/super-check

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

super-check


Super check, make your code more interesting and easier。 偶是中国人,不说鸟话!原则性开源,允许用于商业,美国佬与狗除外。

见过很多类似的写法,就连鼎鼎大名的GLib对此的实现,都很渣。do_val_if_fail(xxxx); 看似一眼知其意,但是非常苦涩,扩展性不好,而且很长,一行80个字符很容易就超了,实际使用时体验非常糟糕。

以下是我的实现版本:

 /*!
  *  Super Check
  *  LOG   中带行号,文件名;
  *  stat  待校验的值,一般函数返回值。
  *  tar   期望值, 一般用对应宏。
  *  expr  处理表达式, 如果只是报错不处理,可以用 DO_NOTHING
  *  ...   扩充表达式,可有可无
  */
#undef CHECK
#define CHECK(exp, tar, expr, ...)                                                               \
    {                                                                                            \
        size_t _ret = (size_t)(exp);                                                             \
        if (unlikely(_ret != (size_t)(tar))) {                                                   \
            LOG(ERROR, TARGET " [%s != %s] => 0x%lX != 0x%lX\n", #exp, #tar, _ret, (size_t)tar); \
            expr;                                                                                \
            __VA_ARGS__;                                                                         \
        }                                                                                        \
    }

可以使用demo体验以下,见utils测试代码。

About

super check, make your code more interest and easier

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published