来自bruce eckel - "虽然你应该总是通过包含头文件来声明函数,但是函数声明不是'必不可少的c。它可能在c但不是cpp来调用你没有声明的函数。这是一种危险的做法,因为c编译器可能会假设使用整数参数调用的函数具有包含整数的参数列表,即使它实际上可能包含float。这会产生错误"我的问题是,即使没有声明一个函数,在它的定义过程中我们必须提到参数的数据类型[VOID FUNC(INT A)],那么编译器如何假定一个浮点数为整数??
答案 0 :(得分:1)
如果在假定应该在该点之前未声明或定义函数,则编译器对所提供的参数进行假设。尝试以下代码并检查结果(使用gcc检查):
#include <stdio.h>
int main (int argc, char * argv[])
{
x(1);
x(1.);
x(1);
return 0;
}
void x(double y)
{
printf ("%f\n", y);
}