Hi Bruno,

> 2005-05-13  Bruno Haible  <[EMAIL PROTECTED]>
>
>       * stdint_.h (int64_t, uint64_t, int_least64_t, uint_least64_t,
>       int_fast64_t, uint_fast64_t, intmax_t, uintmax_t, INT64_MIN, INT64_MAX,
>       UINT64_MAX, INT_LEAST64_MIN, INT_LEAST64_MAX, UINT_LEAST64_MAX,
>       INT_FAST64_MIN, INT_FAST64_MAX, UINT_FAST64_MAX, INTMAX_MIN,
>       INTMAX_MAX, UINTMAX_MAX, INT64_C, UINT64_C, INTMAX_C, UINTMAX_C):
>       Add support for 64-bit integers in the MSVC compiler.

Hmm... I hadn't ever encountered those `i64' and `ui64' suffixes:

>   #define INT64_MIN   (~INT64_MIN)
>   #define INT64_MAX   9223372036854775807LL
>   #define UINT64_MAX 18446744073709551615ULL
> + #elif defined(_MSC_VER)
> + #define INT64_MIN   (~INT64_MIN)
> + #define INT64_MAX   9223372036854775807i64
> + #define UINT64_MAX 18446744073709551615ui64
>   #endif

Then I saw them again in the following macros:

> + #define INT64_C(x) x##i64
> + #define UINT64_C(x) x##ui64
>   #endif

What do you think about using those two macros like this?

  #if @HAVE_LONG_64BIT@
  # define INT64_MIN   (~INT64_MIN)
  # define INT64_MAX   INT64_C(9223372036854775807)
  # define UINT64_MAX UINT64_C(18446744073709551615)
  #elif @HAVE_LONG_LONG_64BIT@
  # define INT64_MIN   (~INT64_MIN)
  # define INT64_MAX   INT64_C(9223372036854775807)
  # define UINT64_MAX UINT64_C(18446744073709551615)
  #elif defined(_MSC_VER)
  # define INT64_MIN   (~INT64_MIN)
  # define INT64_MAX   INT64_C(9223372036854775807)
  # define UINT64_MAX UINT64_C(18446744073709551615)
  #endif

Then, look carefully and you'll see that all three branches
are the same, so you can condense them into one:

  #if @HAVE_LONG_64BIT@ || @HAVE_LONG_LONG_64BIT@ || defined _MSC_VER
  # define INT64_MIN   (~INT64_MIN)
  # define INT64_MAX   INT64_C(9223372036854775807)
  # define UINT64_MAX UINT64_C(18446744073709551615)
  #endif

Jim

P.S. It's easier to read cpp directives when the indentation
after the `#' reflects the nesting level.


_______________________________________________
bug-gnulib mailing list
bug-gnulib@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-gnulib

Reply via email to