如何在原型中调用带有 __P 的函数?

How do you call functions with __P in the prototype?

我浏览了一些头文件,发现有很多这样的函数原型:

returntype some_name __P(arguments);

如果我要调用这个函数,我该怎么做?我是否使用类似

的东西
some_name(arguments);

不包括 __P,或者有其他方法可以调用此类函数吗?

这种原型使用宏 __P 允许在不支持 C90 原型(又名 ansi 原型)的非常旧的系统上包含和编译。

在大多数系统上,__P 宏的参数扩展为参数列表,如下所示:

#ifdef __USING_STONE_AGE_COMPILER__
#define __P(args)  ()
#else
#define __P(args)  args

int some_name __P((int argc, char *argv[]));

在过时的系统上,上述声明扩展为 int some_name();,否则扩展为完整原型:int some_name(int argc, char *argv[]);

忽略__P宏,使用some_name(arguments);语法调用函数即可。另请注意,宏名称 __P 并不重要,包的作者可以为此目的使用任何名称。