Что означает __ (два подчеркивания) в программе Hpux C

Я вижу следующий код в программе HPUX C:

   extern int fcntl __((int, int, ...));
_LF_EXTERN int creat __((const char *, mode_t));

Эти строки компилируются с использованием aCC.

Может ли кто-нибудь дать мне знать значение 2 подчеркивания после fcntl а также creat в приведенном коде?

1

Решение

Скорее всего, это макрос, который позволяет использовать заголовок со старыми компиляторами до ANSI C.
Объявления функции «старого стиля» C не включают типы параметров.

Я подозреваю, что его определение выглядит примерно так

#ifdef __STDC__
#define __(params) params
#else
#define __(params) ()
#endif

Я полагаю, что прототипы функций с типобезопасностью — это одна из первых возможностей языка, которые C заимствовал из C ++.
И тот факт, что я помню это, заставляет меня чувствовать себя очень, очень старым.

6

Другие решения