Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我在 HPUX C 程序中看到以下代码:
extern int fcntl __((int, int, ...)); _LF_EXTERN int creat __((const char *, mode_t));
这些行是使用 aCC 编译的。
有人可以让我知道上面代码之后fcntl和中的2个下划线的含义吗?creat
fcntl
creat
这很可能是一个宏,它允许在旧的、pre-ANSI C 编译器中使用头文件。 “旧式”C 函数声明不包括参数类型。
我怀疑它的定义看起来有点像这样
#ifdef __STDC__ #define __(params) params #else #define __(params) () #endif
我相信类型安全的函数原型是 C 从 C++ 中采用的第一批语言特性之一。 而我记得这一点的事实让我感觉非常非常老。