下面给定的程序在不包含<stdio.h>的情况下工作吗?为什么这是可行的?
int main()
{
printf("integra");
return 0;
}发布于 2011-01-12 13:56:34
printf()的定义在libc.so中,即使您不包含头文件,动态链接器也会处理它。在编译时,printf()将是一个未定义的符号,它假定稍后可能会在libc中找到定义。头文件将只给出原型并抑制编译器(警告),声明在glibc中存在原型的定义。因此,基本上,包含头文件只是为了确保定义在我们的库中可用,以帮助开发人员。
发布于 2011-01-11 12:27:03
在旧标准中,未声明函数假定为int参数并返回值。您的char*具有与int相同的大小(32位),因此一切正常。
不要这样做。
发布于 2011-01-11 13:48:34
printf()仅在libc.so中定义
动态链接器将解析libc中的符号printf(),因为您没有将其包括在内
对于每个程序,libc在gcc中都是默认值
https://stackoverflow.com/questions/4654147
复制相似问题