为什么我能够编译和运行C程序而不包含头文件?

use*_*312 2 c header-files

我在Turbo C++ 3.0,VC++ 2008 express和Borland C++ 6上测试过这个事实.

如果我将一个带有*.C扩展名的C程序添加到项目中,我可以编译并运行程序而不包含头文件.但在这种情况下,某些函数(如sqrt()等)会返回错误的值.

如果我将一个带有*.CPP扩展名的C程序添加到项目中,我将无法在不包含头文件的情况下编译和运行该程序.

为什么?

sti*_*ijn 7

在C中,当编译器找不到函数的定义时,它假定它是一个返回整数的外部函数.因此代码编译,如果链接器然后找到具有相应名称的函数,它也将运行.但可能有意想不到的结果.