On Sat, Feb 6, 2010 at 4:29 PM, rakesh kumar <kumar3...@gmail.com> wrote:
> Hi all,
>         Today while studying a book i just saw the following lines of code:
> int main(void)
> {
>  int printf(const char *n,...);
The local declaration(prototype of the function)
>  int a=1;
>  printf("abcdef");
Calls the C library printf() function.at the time of linking.
> return 0;
> }c
>
>  and the output was: abcdef
> When i tried to run this code, it ran well without any error and this was
> asked in GATE exam also. I am confused, how it ran without <stdio.h>, when i
> used printf() function and gave the same output as printf gives. Okay after
> that i commented the third line "int printf(const char *n,....);", the
> output didn't get affected. Now i am thinking when we can use printf()
> function without any prototype or defining any header, then why do we need
> to use #include<> in our program, because when i changed this program a bit
> by substituting printf() with scanf() it worked fine like scanf() does
> normally.
>  Can anyone explain me,what is this?
The C compiler is a bit lenient in syntactic analysis part for
functions. It assumes a default declaration. And while linking links
your printf() call to the library fucntion.But it should give
warning(saying some implicit declaration).
just try compiling with -Wall option set, you will get the warning.
Also compile the code using g++, it will give error, saying prototype not found.
> Thanks
> _______________________________________________
> Ilugd mailing list
> Ilugd@lists.linux-delhi.org
> http://frodo.hserus.net/mailman/listinfo/ilugd
>

_______________________________________________
Ilugd mailing list
Ilugd@lists.linux-delhi.org
http://frodo.hserus.net/mailman/listinfo/ilugd

Reply via email to