函数指针定义的通常形式是:
int function(int, int);
int (*ptr)(int, int);
但我今天看到了一个我不明白的表格。谁能解释一下吗?
int (*close) __P((struct __db *));
The __P()
宏通常用于支持 K&R C 时代的 C 实现,当时还没有原型(通过 C89 引入到 C)。基本上逻辑是
#if SOME_LOGIC_TO_TEST_WHETHER_IMPLEMENTATION_SUPPORTS_PROTOTYPES
# define __P(argument_list) argument_list
#else
# define __P(argument_list) ()
#endif
您能看出将其应用于您的示例时是如何工作的吗?请注意,为了使其正常工作并且不会导致语法错误,参数列表必须包含括号函数调用,不仅仅是括号中的类似函数的宏。因此,使用宏时需要使用双括号。这可能就是它看起来不寻常的原因。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)