How To Write A "C" Program Without A Main Function
Is it possible to do
that.Yes there can be a C program
without a main function.Here’s the
code of the program without a main
function… #include #define decode(s,t,u,m,p,e,d)
m##s##u##t
#define begin decode(a,n,i,m,a,t,e) int begin()
{
printf(” hello “);
} Does the above program run without
the main function? Yes, the above
program runs perfectly fine even
without a main function.But
how,whats the logic behind it? How
can we have a C program working without main ? Here we are using preprocessor
directive #define with arguments to
give an impression that the program
runs without main.But in reality it runs
with a hidden main function. The ‘##‘ operator is called the token
pasting or token merging
operator.That is we can merge two or
more characters with it. NOTE: A Preprocessor is program which
processess the source code before
compilation. Look at the 2nd line of program- #define decode(s,t,u,m,p,e,d)
m##s##u##t What is the preprocessor doing
here.The macro decode(s,t,u,m,p,e,d) is
being expanded as “msut” (The ##
operator merges m,s,u & t into
msut).The logic is when you pass
(s,t,u,m,p,e,d) as argument it merges the 4th,1st,3rd & the 2nd characters
(tokens). Now look at the third line of the
program- #define begin decode(a,n,i,m,a,t,e) Here the preprocessor replaces the
macro “begin” with the expansion
decode(a,n,i,m,a,t,e).According to the
macro definition in the previous line
the argument must de expanded so
that the 4th,1st,3rd & the 2nd characters must be merged.In the
argument (a,n,i,m,a,t,e) 4th,1st,3rd &
the 2nd characters are ‘m’,'a’,'i’ & ‘n’. So the third line “int begin” is replaced
by “int main” by the preprocessor
before the program is passed on for the
compiler.That’s it… The bottom line is there can never exist
a C program without a main
function.Here we are just playing a
gimmick that makes us beleive the
program runs without main function,
but actually there exista a hidden main function in the program.Here we are
using the proprocessor directive to
intelligently replace the word begin”
by “main” .In simple words int
begin=int main.
Python is a little easier to learn than java just because of how the language handles data types. both are great languages and you might benefit from writing your apps in both languages at once.... as in write a simply app in python then figure out how to do the exact same thing in java... then add in c++. Gaming Winter Jacket
ReplyDelete