首页 > 后端开发 > C++ > C 函数签名是否包含返回类型?

C 函数签名是否包含返回类型?

Barbara Streisand
发布: 2024-12-04 05:02:10
原创
706 人浏览过

Does C   Function Signature Include the Return Type?

返回类型影响函数签名吗?

在 C 中,没有函数模板声明的函数在其签名中排除其返回类型。禁止仅根据不同的返回类型重载函数。

详细说明

函数及其声明和签名之间的关系很复杂。

声明和实体

函数声明可以声明功能实体或模板实体。普通函数和函数模板的显式特化属于第一类。主函数模板或带有未指定参数的显式特化属于后一类。

签名定义

根据 C 标准 (1.3.10),函数签名包含以下:

  • 参数类型
  • 对于类函数上的成员、cv 限定符以及包含类

但是,此定义缺少返回类型的提及。

函数模板和返回类型

相反,函数模板特化的签名包括函数签名和返回类型(14.5.5.1).

那么,签名到底是什么?

对于非模板函数,签名不包括返回类型。但是,对于模板特化,返回类型被合并。

重载的含义

标准禁止仅根据不同的返回类型进行重载。不过,对于什么构成这种区别仍然不明确。

编译器行为

由于类型不兼容,主要编译器拒绝以下代码:

int f();
double f(); // invalid
登录后复制

然而,他们接受:

template<typename T> int f();
template<typename T> double f(); // invalid?
登录后复制

结论

返回类型虽然不是非模板函数签名的一部分,但对于确定函数类型兼容性至关重要。理解这些细微差别对于有效的 C 编程至关重要。

以上是C 函数签名是否包含返回类型?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板