I’m experimenting with a piece of C code. Can anyone tell me why is VC 9.0 with SP1 crashing for me? Oh, and the code is meant to be an example used in a discussion why something like
void main (void)
is evil.
struct foo { int i; double d; } main (double argc, struct foo argv)
{
struct foo a;
a.d=0;
a.i=0;
return a.i;
}
If I put
return a;
compiler doesn’t crash.
The code gives undefined behavior. This doesn’t require the compiler to crash, it just says you’ve basically broken the rules, so the compiler hasn’t done anything wrong, no matter what happens.
Edit: that said, as a quality of implementation issue, it’s absolutely true that there’s basically never an excuse for the compiler to crash — reasonably speaking, it should always exit normally, no matter what data you feed it.