c可以声明两个具有相同名称,返回类型但参数不同的函数

史蒂夫

为什么gcc可以编译以下代码

#include <stdio.h>
int func();
int func(int a) { return 1; }
int main() {
   func(10);
   return 0;
}

但是如果我加char func();,gcc说conflicting types for ‘func’

谢尔盖·卡里尼琴科(Sergey Kalinichenko)

这不是重载,因为您不能不func()带参数地调用。这是具有兼容功能声明符的单个功能的特殊情况,如标准中所述:

如果一种类型具有参数类型列表,而另一种类型由不属于函数定义一部分且包含空标识符列表的函数声明符指定,则该参数列表不应具有省略号终止符,并且每个参数的类型均应为与应用默认参数提升的结果类型兼容。

从更改返回类型intchar就是要打破这个规则的一种方式。打破它的另一种方法是提供除以下以外的参数类型int

int func();
int func(char a) { return 1; } // Does not compile

如果要声明不带任何参数的函数,则声明符应如下所示:

int func(void);

现在声明func带的int会导致编译时错误:

int func(void);
int func(int a) { return 1; } // Does not compile

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

创建两个具有相同名称但参数类型不同的R函数

C ++ Koenig(依赖于参数)查找:如果不同名称空间中的两个名称空间函数具有相同的参数类型怎么办?

我们可以定义两个具有相同名称但参数不同的函数吗?

具有相同名称和参数,不同返回类型的C ++成员函数

是否可以创建具有两个具有相同名称的属性的类型?

具有相同名称但参数和返回类型不同的虚函数

如何实现两个具有相同名称但参数不同的JNI方法?

具有相同名称和不同模板参数的两个结构如何工作

Java-具有相同名称,相同参数的不同类型的两个方法,但是这些类型在层次结构上相关

LuaJ从两个不同的LuaScript中加载两个具有相同名称的函数

您可以在不同的翻译单元中拥有两个具有相同名称和相同成员函数的类吗?

在XSD中,两个元素可以具有不同的名称但具有相同的类型吗?

构建discord bot时,能否在discord.py中使用两个具有相同名称但参数不同的函数?

为什么C ++不允许两个具有相同名称的函数/类模板,它们的区别仅在于非类型模板参数(整数类型)的类型?

Orion Context Broker实体可以具有两个名称相同但类型不同的属性吗?

Java模板,如何使用两个具有相同名称和不同类型的类

是否可以通过正则表达式提取具有两个不同名称的相同字段?

两个使用相同名称类型的不同库

我们可以在Codeigniter控制器中创建两个具有相同名称的函数吗?

两个具有相同名称的类可以跨两个不同的程序集位于同一个命名空间中吗?

为什么在使用动态类型和动态绑定时,两个具有相同名称(属于不同类)的方法应具有相同的原型?

Swift类使用两个在不同目标中具有相同名称的Objective C文件

是否可以有两个具有相同名称的属性?

是否可以有两个具有相同名称的ConnectionString?

推断显示两个具有相同名称的不同变量?

两个不同包装中具有相同名称的实体

减去两个具有相同名称不同索引的数据框

Python-行为-具有相同名称的两个不同步骤

具有相同名称范围的Excel上的两个不同的从属下拉列表