【问题标题】:Where in the C standard variadic functions are described?C 标准可变参数函数在哪里描述?
【发布时间】:2016-01-03 14:41:30
【问题描述】:

我在 C11 标准中搜索可变参数函数的描述,但我找到的唯一信息几乎没有提及该主题。有人可以告诉我可以在其中找到的所有关于他们的主题的参考吗?

到目前为止,我发现自己在 §6.9.1.8 中:

如果定义了一个接受可变数量参数的函数 没有以省略号结尾的参数类型列表, 行为未定义。

在 §7.16 中描述了 <stdarg.h> 头文件。但是我非常怀疑这是标准中关于可变参数函数的所有信息。

【问题讨论】:

  • 还有一些与此相关的段落。基本上,在参数列表中为... 传递的参数被视为没有原型定义的函数(即应用默认参数提升)。但实际上并不需要更多指定变量参数列表。
  • 您当然需要<stdarg.h> 才能使用变量参数。
  • C11 标准草案,6.7.6.3 Function declarators (including prototypes)?

标签: c language-lawyer variadic-functions c11


【解决方案1】:

除了您指出的章节之外,我建议您查看C11 标准中的第 §6.7.6.3 章,其中包含有关 函数声明符 的更多信息。总而言之,

  • 可变函数声明:第 §6.7.6.3 章
  • 可变函数调用:第 §6.5.2.2 章
  • 可变函数定义:第 §6.9.1 章
  • 可变参数函数参数列表相关宏及其用法:第 §7.16.1.1 - §7.16.1.4 章

但是,AFAIK 标准本身并没有以完整章节(如果您正在寻找的话)的形式编译可变参数函数的完整描述。

您可能想查看wiki entry 以获得更多信息。

【讨论】:

  • 那么编译器开发人员应该如何支持它们?
  • @FISOCPP 我没听懂你。有足够的信息来支持标准中的可变参数函数,只是不是以完整的章节或教程的形式。请问您要查找哪些特定信息?
猜你喜欢
  • 2013-01-21
  • 2014-11-29
  • 2019-12-16
  • 1970-01-01
  • 2011-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多