Итак, я прошел через некоторый код, и есть некоторые вещи, которые я не могу понять.У меня есть два заголовочных файла.Один из них называется «args.h», и в нем есть следующие операторы:
#if (defined(__cplusplus) || defined(__STDC__) || defined(c_plusplus))
#define NEW_STYLE 1
#define VOID void
#define ARGS(parenthesized_list) parenthesized_list
#else
#define NEW_STYLE 0
#define VOID
#define ARGS(parenthesized_list) ()
#define const
#endif
#if !defined(EXIT_SUCCESS)
#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1
#endif
В другом заголовочном файле прототипы функций объявляются так:
#if defined(__cplusplus)
extern "C" {
#endif
extern void yyerror ARGS((const char *s_));
extern int yylex ARGS((void));
extern int yyparse ARGS((void));
extern int yywrap ARGS((void));
#if defined(__cplusplus)
}
#endif
и множество других вещей.
Итак, мои вопросы:
1> Что именно делает #define const?
2> Почему arg объявлен в другом заголовкефайл?Не могли бы мы просто объявить функции как обычный extern void a (const char * s__)?Или это просто предпочтение стиля?
Спасибо.