//#include <stdio.h>
//#include <conio.h>
main(){
printf("Hi");
getch();
}
Run Code Online (Sandbox Code Playgroud)
当我编程这个时,它震惊了我,它没有实际导入任何包含printf函数的stdio等c库.为什么会这样?(使用Dev-C++ 4.9.9.2,保存为.c,而不是.cpp)
C允许您在不首先定义原型的情况下调用函数.(C++不会这样做.)隐式原型printf将定义如下:
int printf();
Run Code Online (Sandbox Code Playgroud)
巧合的是,这个隐式原型的调用约定printf与您平台上的实际调用约定相匹配.
一般来说,你不能指望这种工作,并且有很多情况下它不起作用.我建议启用编译器警告来检测隐式原型声明,以便您可以修复它们(通过包含正确的标头).
脚注: #include不导入库,它只是在编译时将文件粘贴到源代码中.该<stdio.h>首标包含(直接或间接)某些原型,但是库必须单独链接英寸 由于printf通常在默认情况下链接到程序的库中,因此通常不必执行任何操作printf.