Один заголовок socket.h
в моей системе Linux выглядит следующим образом.
/* Bits in the FLAGS argument to `send', `recv', et al. */
enum
{
MSG_OOB = 0x01, /* Process out-of-band data. */
#define MSG_OOB MSG_OOB
MSG_PEEK = 0x02, /* Peek at incoming messages. */
#define MSG_PEEK MSG_PEEK
MSG_DONTROUTE = 0x04, /* Don't use local routing. */
#define MSG_DONTROUTE MSG_DONTROUTE
...
Определение enum
является своего рода идиомой для создания констант типа-safe-ish в C, что язык действительно рассматривает как константы времени компиляции.
Мой вопрос: в чем заключается назначение макросов MSG_OOB
, MSG_PEEK
,... которые расширяются до себя?