为什么空声明适用于带有int参数的定义但不适用于浮点参数?
我认为不同的是
declaration
没有参数类型......
为什么这样做:
int fuc();
int fuc(int i) {
printf("%d", i);
return 0;
}
但这无法编译:
int fuc();
int fuc(float f) {
printf("%f", f);
return 0;
}
随着消息:
错误:'fuc'的冲突类型。注意:具有默认促销的参数类型不能与空参数名称列表声明匹配
没有找到相关结果
已邀请:
3 个回复
断跑胺弄萎
...告诉编译器一些标识符(在这种情况下为
)命名一个函数,并告诉它函数的返回类型 - 但是没有指定函数的参数的数量或类型。打算收到。 原型:
...在其他方面类似,但也指定了函数要接收的参数的数量/类型。如果它不带参数,你可以使用类似
的东西来指定(因为将括号留空是一个声明)。一种新式的函数定义:
...也可以作为原型。 如果没有范围内的原型,编译器会在调用函数之前将默认促销应用于参数。这意味着任何
或
它升级为
,任何
升级为
。因此,如果你声明(而不是原型)一个函数,你不想指定任何
,
或
参数 - 调用这样的东西会/将给出未定义的行为。使用默认标志,编译器可能会拒绝代码,因为基本上没有办法正确使用它。您可能能够找到一些编译器标志来使它接受代码,但它会毫无意义,因为无论如何都无法使用它...
芜任亮蜡
告诉编译器存在一个函数
,它取一个
并返回一个
。 定义
告诉编译器实际上是什么,并且也提供了声明。 声明和定义之间的区别在于说存在大小为6的蓝帽并且给某人制作了大小为6的蓝帽之间的区别:声明说有这样的东西,定义说这里的东西就是这个东西有问题。
素汞读