-2

来自 bruce eckel ——”虽然你应该总是通过包含头文件来声明函数,但函数声明在 c 中并不是必不可少的。它可以在 c 中而不是 cpp 中调用你没有声明的函数。这是一种危险的做法,因为 c编译器可能会假设您使用整数参数调用的函数具有包含整数的参数列表,即使它实际上可能包含浮点数。这可能会产生错误“我的问题是,即使未声明函数,在其定义期间我们也必须提到参数[ VOID FUNC( INT A)] 的数据类型,那么编译器如何假定浮点数是整数?

4

1 回答 1

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);
}
于 2014-12-13T23:46:28.197 回答