跳转至

代码块

静态断言

利用负数组下标做静态断言

#define UNSTD_STATIC_CHECK(Expr)                     UNSTD_STATIC_CHECK1(Expr, __LINE__)
#define UNSTD_STATIC_CHECK1(Expr, Line)              UNSTD_STATIC_CHECK2(Expr, Line)
#define UNSTD_STATIC_CHECK2(Expr, Line)              typedef char UnName##Line[(Expr) ? 1 : -1];

rand最大值

int RandomNum(int min_num, int max_num)
{
    if (min_num > max_num)
    {
        int tmp_num = min_num;
        min_num = max_num;
        max_num = tmp_num;
    }

    int interval_num = max_num - min_num;
    if (interval_num <= 0)
    {
        return 0;
    }

    if (interval_num < RAND_MAX)
    {
        return min_num + (rand() % interval_num);
    }
    else
    {
        int rand_num = (rand() << 16) + rand(); // 两次随机数补成一个int(主要解决windows下rand最大值只有2^15的问题)
        if (rand_num < 0)
        {
            rand_num *= -1;
        }
        return min_num + int(rand_num % interval_num);
    }
}