sizeof is a compile-time constant and main may not been called by that time.
However manul of C clearly says "The size operator shall not be applied to an expression that has function or incomplete type" however sizeof() can take any valid identifier, but it won't return a valid (an honestly true and valid) result for function names.
So there is no explanation why sizeof(main) is returning 2, however i wrote a small program as following which is giving me 1.
main()
{
printf("%d\n", sizeof(main));
}