编译器使用对称为的函数的引用来构建源文件
printf(), 而无需
知道其实际使用的参数或其返回类型是什么。生成的程序集在程序的静态数据区域中包含
push字符串地址的
"HelloWorld",后跟
call到
printf。
将您的目标文件链接到可执行文件时,链接器会看到对它的引用
printf并提供C标准库函数
printf()。通过 巧合 ,你传递的参数(
constchar*)是真正的声明兼容
printf(),所以它能够正确工作。但是,请注意,
printf()您的程序隐式声明的具有返回类型
int(我认为),标准
printf()也具有该类型。但是如果它们不同,并且您要将调用的结果分配给
printf()变量,则可能会出现不确定的行为,并且可能会得到不正确的值。
长话短说:
#include正确的标头可为您使用的函数获得正确的声明,因为不建议使用这种隐式声明,因为它容易出错。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)