例如,在参考文献中:
type va_arg (va_list ap, type)
ap
代表参数指针吗?还有别的吗?
答案 0 :(得分:6)
这实际上是一个容易回答的问题。
ap
代表参数指针。
来自The C Programming Language,第二版,Brian W. Kernighan和Dennis M. Ritchie:
7.3可变长度参数列表
[...]类型va_list用于声明一个将依次引用每个参数的变量;在minprintf中,对于“参数指针”
,此变量称为ap
答案 1 :(得分:4)
ap
代表 Argument Pointer 。事实上,它是sometimes abbreviated as arg_ptr
:
type va_arg(
va_list arg_ptr,
type
);
type
- 要检索的参数类型。arg_ptr
- 指向参数列表的指针。
答案 2 :(得分:2)
这实际上是一个难以回答的问题。
见ouah's answer; K& R2中提到了短语“参数指针”。
{C}标准在1989年引入了<stdarg.h>
标头。ANSI C Rationale没有显示任何示例,也没有使用名称ap
或{{1} }。标准本身(最新草稿here在示例中使用名称arg_ptr
,但不解释它。
我无法找到名称ap
的解释。它最初代表“参数指针”似乎是合理的,但同样重要的是要注意类型ap
不是(必然)指针类型。例如,在gcc中,它被定义为va_list
,这是一种由编译器直接实现的类型。 (它在我的系统上恰好有24个字节的大小,但这不是特别有用的信息)。
底线:名称__builtin_va_list
是ap
对象的常规名称,我们无需特别关注。