1

我在 HPUX C 程序中看到以下代码:

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

这些行是使用 aCC 编译的。

有人可以让我知道上面代码之后fcntl和中的2个下划线的含义吗?creat

4

1 回答 1

6

这很可能是一个宏,它允许在旧的、pre-ANSI C 编译器中使用头文件。
“旧式”C 函数声明不包括参数类型。

我怀疑它的定义看起来有点像这样

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

我相信类型安全的函数原型是 C 从 C++ 中采用的第一批语言特性之一。
而我记得这一点的事实让我感觉非常非常老。

于 2014-08-19T13:10:52.580 回答