[lkml]   [2001]   [Aug]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [IDEA+RFC] Possible solution for min()/max() war
    On 28 Aug 2001, Andreas Schwab wrote:

    > Roman Zippel <> writes:
    > |> Hi,
    > |>
    > |> Linus Torvalds wrote:
    > [...]
    > |> > You just fixed the "re-use arguments" bug - which is a bug, but doesn't
    > |> > address the fact that most of the min/max bugs are due to the programmer
    > |> > _indending_ a unsigned compare because he didn't even think about the
    > |> > type.

    #if 0
    If the comparison was made unsigned, cast to the largest natural
    value on the target, while keeping the types and sizes of the
    input variables the same, this macro does about what 99.9999999 percent
    of what everybody wants:

    #include <stdio.h>

    #define min(a,b) ((size_t)(a) < (size_t)(b) ? (a) : (b))

    int main()
    printf("%d\n", min(1,2));
    printf("%d\n", min(-1,2));
    printf("%d\n", min(0xffffffff,3));
    printf("%d\n", min(0x8000,4));
    printf("%d\n", min(0x7fff,5));
    printf("%d\n", min(0x80000000,6));
    printf("%d\n", min(0x7fffffff,7));

    printf("%ld\n", min(1L,2L));
    printf("%ld\n", min(-1L,2L));
    printf("%ld\n", min(0xffffffff,3L));
    printf("%ld\n", min(0x8000,4L));
    printf("%ld\n", min(0x7fff,5L));
    printf("%ld\n", min(0x80000000,6L));
    printf("%ld\n", min(0x7fffffff,7L));

    printf("%lu\n", min(1L,2LU));
    printf("%lu\n", min(-1L,2LU));
    printf("%lu\n", min(0xffffffff,3LU));
    printf("%lu\n", min(0x8000,4LU));
    printf("%lu\n", min(0x7fff,5LU));
    printf("%lu\n", min(0x80000000,6LU));
    printf("%lu\n", min(0x7fffffff,7LU));

    printf("%d\n", min(-1, -2));
    printf("%d\n", min(-1, 0));
    printf("%p\n", min((void *)0x80000000, (void *)0x7fffffff));
    return 0;

    Dick Johnson

    Penguin : Linux version 2.4.1 on an i686 machine (799.53 BogoMips).

    I was going to compile a list of innovations that could be
    attributed to Microsoft. Once I realized that Ctrl-Alt-Del
    was handled in the BIOS, I found that there aren't any.

    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2005-03-22 12:58    [W:0.024 / U:82.524 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site