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