首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在C++11中会有几处提到“函数原型”呢?当然,这些在C++中并不存在

为什么在C++11中会有几处提到“函数原型”呢?当然,这些在C++中并不存在
EN

Stack Overflow用户
提问于 2014-01-04 02:38:28
回答 1查看 203关注 0票数 4

C++11标准对“函数原型”进行了几次传递。

在任何有关特征的定义中,都没有相关特征的定义,而是在以下随机地点:

  • [C++11: 3.3.4]中的“函数原型范围”(其定义实际上承认它在谈论“函数声明”);
  • [C++11: 17.5.1.4/1]中的库类型定义子句的编辑描述,脚注175 (它似乎是指C功能);
  • [C++11: 20.9.4.3/6]将假想的template <T> typename add_rvalue_reference<T>::type create();描述为“函数原型”。
  • 同样的事情在[C++11: 20.9.6/4]
  • 附录[C++11: C.1.7]讨论了C中的声明器:“使用C不完全声明样式的函数声明必须完成才能成为完整的原型声明,然后是”基本原理:原型对于类型安全至关重要“。

..。仅此而已。

当然,我们是以“声明”/“定义”术语为基础的,由于C++标准在其核心定义中没有使用“原型”术语,这些只是排版/不一致,因为一些编辑器熟悉C术语?

还是我错过了什么微妙的意义?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-04 05:11:19

是也不是。我认为"prototype“的一些用法是有意义的,但另一些则真正应该改为”声明“。

  • 我同意§3.3.4/1应该讨论“函数声明范围”,而不是“函数原型范围”。
  • §17.5.1.4是关于C++头的,所以我认为它应该使用“声明”而不是原型。
  • 脚注175具体提到了C头提供的内容,因此我认为使用C术语可能是合适的(即继续使用"prototype",尽管可能会添加一个额外的注释,这相当于一个C++声明)。
  • 我同意在§20.9.6/4和20.9.4.3/6中使用"prototype“都是错误,应该使用”声明“。
  • C.1.7专门将C与C++进行比较,讨论了C中的声明与原型,以及它们与C++声明的比较方式,因此它几乎需要保留"prototype“的用法才有意义。

至于“原型”(或相关特性)的定义,ISO 9899:1999 (通过TC 3)是对C++标准的规范参考,因此它的“原型”定义可以适用,因为C++标准本身没有提供任何内容。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20916171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档