VCでのvoid main()はMSの仕様で許されています。

http://msdn.microsoft.com/en-us/library/6wd819wh.aspx
> Alternatively, the main and wmain functions can be declared as returning void (no return value).


VC++2008EEで実験したが、0を返してるね。

void main()
{
}
00841000 xor eax,eax
00841002 ret


__tmainCRTStartup
 :
00841167 call main (841000h)
0084116C add esp,0Ch
0084116F mov dword ptr [mainret (843030h)],eax
 :