- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
函数指针定义的通常形式是:
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/
我正在尝试在 ${__P()} 函数中插入一个变量,并且已经阅读了关于此事的多个线程,但它不起作用。我的用户定义变量包含: FALLBACK_TOKEN someLongString ACTUAL_T
函数指针定义的通常形式是: int function(int, int); int (*ptr)(int, int); 但是我今天看到了一个我不明白的表格。谁能解释一下吗? int (*close
函数指针定义的通常形式是: int function(int, int); int (*ptr)(int, int); 但我今天看到一个表格,我不明白。谁能解释一下? int (*close)
我正在使用 ${__P(users,2)} 在运行时指定没有线程(用户) 当我在单台机器上执行脚本时,它工作正常。 但是当我在分布式环境中执行相同的脚本时它不工作 正确。它取默认值 2 。 我还尝试删
我浏览了一些头文件,发现有很多这样的函数原型(prototype): returntype some_name __P(arguments); 如果我要调用这个函数,我该怎么做?我是否使用类似的东西
我是一名优秀的程序员,十分优秀!