bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: human interface change?!? [Re: xstrtol.h


From: Bruno Haible
Subject: Re: human interface change?!? [Re: xstrtol.h
Date: Sat, 4 Aug 2007 19:28:25 +0200
User-agent: KMail/1.5.4

Paul Eggert wrote:
> First, human_options should probably not output to stderr or exit, but
> should instead let the caller do it.

Indeed; this allows to not increase the number of arguments to
human_options from 3 to 4.

> +static char opt_str_storage[3] = {'-', 0, 0};
> +#define OPT_STR(opt_idx, c, long_options)    \
> +  ((opt_idx) < 0                             \
> +   ? (opt_str_storage[1] = c, opt_str_storage)       \
> +   : LONG_OPT_STR (opt_idx, long_options))

I would not put a statically allocated array into every compilation unit
that includes "system.h". In fact, the middle part of OPT_STR does not need
to be a macro or inline function; it can as well be a plain function:

#define OPT_STR(opt_idx, c, long_options)       \
  ((opt_idx) < 0                                \
   ? short_opt_str (c)                          \
   : LONG_OPT_STR (opt_idx, long_options))

/* Define in a .c file. */
const char *
short_opt_str (char c)
{
  static char opt_str_storage[3] = { '-', 0, 0 };
  opt_str_storage[1] = c;
  return opt_str_storage)
}

Bruno





reply via email to

[Prev in Thread] Current Thread [Next in Thread]