【问题标题】:What does 'ap' stand for in C examples?'ap' 在 C 示例中代表什么?
【发布时间】:2014-06-21 19:37:47
【问题描述】:

例如在参考文献中:

type va_arg (va_list ap, type)

ap 是否代表参数指针?还有什么?

【问题讨论】:

  • 它实际上代表“作者 [is] phossilized”。在 1970 年代或更早的代码中是合理的,但在今天更难证明。
  • Does ap stand for argument pointer? 可能是。它只是一个变量名,所以它几乎可以代表作者命名它的任何东西。
  • 好一个。感谢您的风格建议。
  • @JerryCoffin 你是说我们不应该在现代 c 中使用可变参数吗?
  • @this 真的是什么推断的吗? :|

标签: c coding-style


【解决方案1】:

这实际上是一个很容易回答的问题。

ap 代表参数指针

来自The C Programming Language,第二版,Brian W. Kernighan 和 Dennis M. Ritchie:

7.3 变长参数列表

[...] va_list 类型用于声明一个将依次引用每个参数的变量;在 minprintf 中,这个变量被称为 ap,代表“参数指针”

【讨论】:

  • 好发现!很有可能,丹尼斯·里奇(Dennis Ritchie)是命名该变量的人。
  • 好收获。仍然需要注意的是,va_list 不一定是指针类型;它只是抽象意义上的“指针”。
【解决方案2】:

ap 代表参数指针。其实就是sometimes abbreviated as arg_ptr

type va_arg(
   va_list arg_ptr,
   type 
);
  • type - 要检索的参数类型。
  • arg_ptr - 指向参数列表的指针。

【讨论】:

  • 也许,但在 C 标准或 ANSI C Rationale 中不支持此功能。两者都只是使用名称ap 而没有解释。还值得注意的是,va_list 不是(必然)是指针类型。
  • @KeithThompson K&R2 有支持,看我的回答
  • @KeithThompson 回复:“两者都只使用名称 ap 而无需解释”:这里相同。很高兴知道用户 ouah 找到了答案。
【解决方案3】:

这实际上是一个很难回答的问题。

ouah's answer; K&R2中提到了“参数指针”这个短语。

<stdarg.h> 标头是 1989 年由 ANSI C 标准引入的。ANSI C Rationale 没有显示任何示例,也没有使用名称 aparg_ptr。标准本身(最新草案是here,在示例中使用了名称ap,但没有解释。

我无法找到名称 ap 的解释。它最初代表“参数指针”是合理的,但同样重要的是要注意类型 va_list 不是(必然)指针类型。例如,在 gcc 中,它被定义为 __builtin_va_list,这是一种由编译器直接实现的类型。 (它在我的系统上恰好有 24 字节的大小,但这不是特别有用的信息)。

底线:名称apva_list 对象的常规名称,我们无需特别关注。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    • 2011-12-01
    • 2011-01-09
    相关资源
    最近更新 更多