Взял из coreutils файл system.h и урезал его до следующего:
ifndef CHAR_BIT
# define CHAR_BIT 8
#endif
#define TYPE_MINIMUM(t) ((t) (TYPE_SIGNED (t) \
? ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1) : (t) 0))
#define TYPE_MAXIMUM(t) ((t) (~ (t) 0 - TYPE_MINIMUM (t)))
#ifndef CHAR_MIN
# define CHAR_MIN TYPE_MINIMUM (char)
#endif
#ifndef CHAR_MAX
# define CHAR_MAX TYPE_MAXIMUM (char)
#endif
enum
{
GETOPT_HELP_CHAR = (CHAR_MIN - 2),
GETOPT_VERSION_CHAR = (CHAR_MIN - 3)
};
#define GETOPT_HELP_OPTION_DECL \
"help", no_argument, 0, GETOPT_HELP_CHAR
#define GETOPT_VERSION_OPTION_DECL \
"version", no_argument, 0, GETOPT_VERSION_CHAR
#define case_GETOPT_HELP_CHAR \
case GETOPT_HELP_CHAR: \
usage (EXIT_SUCCESS); \
break;
#define HELP_OPTION_DESCRIPTION \
_(" --help display this help and exit\n")
#define VERSION_OPTION_DESCRIPTION \
_(" --version output version information and exit\n")
#define case_GETOPT_VERSION_CHAR(Program_name, Authors) \
case GETOPT_VERSION_CHAR: \
usage (EXIT_SUCCESS); \
break;
Дак вот при компиляции выдаёт следующее:
system.h:41: error: parse error before "char"
system.h:41: error: enumerator value for `GETOPT_HELP_CHAR' not integer constant
system.h:41: error: parse error before ')' token
system.h:42: error: parse error before "char"
system.h:42: error: enumerator value for `GETOPT_VERSION_CHAR' not integer constant
system.h:42: error: parse error before ')' token
Я так понимаю, что help_char по идее должен быть буквой "h".
Объясните мне, пожалуйста, где ошибка и чего я недопонимаю?