2

可能重复:
为什么#include <stdio.h> *不需要*使用 printf()?

我在下面给定的代码中遇到了问题。

int main()
{
printf("\nHello Stack Overflow\n\n") ;
return 0 ;
}

在上面提到的代码中,我留下了“#include”。如果我编译并执行这段代码,输出会按预期打印。但是“#include”是C程序中最重要的东西,我忽略了它,编译仍然没有任何错误但有警告。

为什么会这样?

4

3 回答 3

2

在 C 中,未声明的函数被隐式视为返回 anint并接受int参数。

这是不好的做法,会咬你。例如,如果您想打印与 int 大小不同的数据,例如doubleor float

于 2012-11-28T10:17:44.557 回答
0

From man gcc

   -nostdlib
       Do not use the standard system startup files or libraries when linking.  No startup files and only the libraries you specify will be
       passed to the linker.  The compiler may generate calls to "memcmp", "memset", "memcpy" and "memmove".  These entries are usually
       resolved by entries in libc.  These entry points should be supplied through some other mechanism when this option is specified.
于 2012-11-28T10:19:25.323 回答
0

printf symbol is not known at compile time, but libc in linked implicite into binary... and that is how it works.

于 2012-11-28T10:19:49.653 回答