比较两个整数的通用函数?

ant*_*tak 13 c

是否有一个相当标准的C(Linux)函数,或者一个代码有效但性能良好的方法,用于比较任意大小的两个整数?

我正在寻找一些int intcmp(const void *a, const void *b, size_t size)适用于整数ab任何实际尺寸的参数size.(memcmp()如果架构是大端的话,我会工作(我认为).)

我倾向于使用的实现是这样的(有效整数比较函数的改进),但它不是完全通用的,并且有足够的代码开销,我通常会在插入之前三思而后行.

int intcmp(const void *a, const void *b, size_t size) {

    #define CASE_SIZE_RETURN_A_B_CMP(_t) \
        case sizeof(_t): \
            return ((*(_t *)(a) > *(_t *)(b)) - (*(_t *)(a) < *(_t *)(b)))

    switch (size) {
    CASE_SIZE_RETURN_A_B_CMP(char);
    CASE_SIZE_RETURN_A_B_CMP(short);
    CASE_SIZE_RETURN_A_B_CMP(int);
    CASE_SIZE_RETURN_A_B_CMP(long long);
    }
    #undef CASE_SIZE_RETURN_A_B_CMP

    assert(0);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

小智 0

我认为以下链接会有帮助。您无需使用比较器即可进行比较,从而稍微降低代码开销。我过去曾使用过与此链接相关的代码。

-好狩猎-

C 程序无需使用逻辑运算符即可比较整数?