这个问题在这里已经有了答案:
9年前关闭。
Possible Duplicate:
Why #include <stdio.h> is not required to use printf()?
//#include <stdio.h>
//#include <conio.h>
main(){
printf("Hi");
getch();
}
当我编写这个程序时,它让我感到震惊,它实际上没有导入任何包含 printf 函数的 c 库,例如 stdio。为什么呢? (使用 Dev-C++ 4.9.9.2,另存为 .c,而不是 .cpp)
最佳答案
C 允许您在不首先定义原型(prototype)的情况下调用函数。 (C++ 不这样做。)printf
的隐式原型(prototype)将定义如下:
int printf();
巧合的是,这个隐式原型(prototype)的调用约定与
printf
的实际调用约定相匹配。在您的平台上。一般来说,你不能指望这个工作,并且有很多情况下它不会工作。我建议启用编译器警告以检测隐式原型(prototype)声明,以便您可以修复它们(通过包含正确的 header )。
脚注:
#include
不导入库,它只是在编译时将文件粘贴到您的源代码中。 <stdio.h>
header 包含(直接或间接)某些原型(prototype),但该库必须单独链接。由于printf
通常在默认链接到程序的库中,您通常无需执行任何操作即可使用 printf
.
关于c - 使用 printf 函数而不实际导入 stdio.h 并且它有效?!为什么呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11150883/