【发布时间】:2014-04-07 16:48:22
【问题描述】:
概念问题。考虑以下代码:
#include<stdio.h>
int brasa(int, float);
int brasa(int, int);
float brasa(int, int);
int main(){
return 0;
}
编译器给出以下错误:
Line 4: error: conflicting types for 'brasa'
Line 3: note: previous declaration of 'brasa' was here
Line 5: error: conflicting types for 'brasa'
Line 3: note: previous declaration of 'brasa' was here
那是什么类型的消息? 另一个概念性问题:这三个声明all是否声明了相同的函数?
【问题讨论】:
-
"那是什么信息?"这是一条错误消息,告诉您代码中存在错误。 “这三个声明是否都声明了相同的功能?”从概念上讲,不,它们都没有声明任何东西,因为代码无法编译。你可以说第一个声明了一些东西,而其他的都是错误,但是如果代码没有编译,那真的没关系......
-
为什么违反了类型兼容性约定?
-
“类型兼容性约定”在函数声明中不起作用。正如@hacks 在他的回答中提到的那样,C 只允许对具有特定名称的函数进行一次声明,而不会对不同的参数/返回类型进行重载。
float f = 1;是另一回事 - 这就是类型兼容性很重要的地方,编译器会根据需要自动插入适当的转换...
标签: c types function-declaration