给你说一下库、头文件、源文件、编译器之间的交互过程。源文件中包含头文件<stdio.h>所引入的scanf和printf仅仅是一个声明,这个声明在源文件内被编译器先和其他的代码编译,构造语法树生成.obj,这个是中间的文件,不包含scanf的实现代码。稍后在链接阶段,会把这些.obj制作为二进制的可执行文件(EXE DLL ELF DSO),那个对scanf的引用会被替换为汇编级别的函数调用,即PUSH/CALL scanf/POP这样。库就是编译器生成好的二进制文件(库有静态库和动态库之分,静态库.LIB不能自己执行,也不能被其他程序调用,而动态库.DLL可以被别的EXE DLL调用),这个文件中的代码可以被别的程序所引用,比如scanf printf的实现代码,或者是你自己编写的算法。编译器只是个字符串处理工具,处理负责语法规范的源文件,生成二进制可执行数据,至于scanf这些C函数依赖于底层的实现,和编译器可以说几乎无关。能不能帮到你