gpt4 book ai didi

c - 函数指针声明 - __P 做什么?

转载 作者:太空狗 更新时间:2023-10-29 16:58:17 25 4
gpt4 key购买 nike

函数指针定义的通常形式是:

 int function(int, int);
int (*ptr)(int, int);

但我今天看到一个表格,我不明白。谁能解释一下?

int (*close)    __P((struct __db *));

最佳答案

__P() 宏通常用于支持 K&R C 时代的 C 实现,当时还没有原型(prototype)(通过 C89 引入 C)。基本上逻辑是

#if SOME_LOGIC_TO_TEST_WHETHER_IMPLEMENTATION_SUPPORTS_PROTOTYPES
# define __P(argument_list) argument_list
#else
# define __P(argument_list) ()
#endif

当应用于您的示例时,您能看出它是如何工作的吗?请注意,要使其正常工作且不会导致语法错误,参数列表必须包含函数调用 的括号,而不仅仅是 的括号>类似函数的宏。因此,使用宏时会出现双括号。这可能就是它看起来不寻常的原因。

关于c - 函数指针声明 - __P 做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16122490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com