Re: sos help for understanding

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



yacson <yactiem@xxxxxxxxx> writes:

> Sorry, I'm a  new user and i want to understand why this c code work (in
> linux I'm worling on mandriva 2009 spring)?
> main()
> {printf("hello,world");}
>
> why does not the compiler complain about the missing stdio.h ? it just gives
> "warning:incompatible implicit declaration of built-in function printf" and
> actually prints the string "hello,world".

For historical reasons C permits you call functions which have not
been declared.  If you do that, the function is presumed to have been
declared as "int fn()" (which is not the same as "int fn(void)").
That is what is happening here.

This is not true in C++, by the way, only in C.

Technically the standard prohibits you from using an implicit
declaration for a varargs function like printf, but in practice it
normally works on real systems.  Also the standard prohibits you from
using an implicit declaration for a function which does not actually
return int, but that too will normally work unless the function
returns a struct.

Ian

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux