Since the arrays are local to main() their storage class is "automatic" which means they will be allocated at run-time and so the error will appear at run-time, not earlier.It would make a difference when the arrays were declared as "static" or as a global variable (yes, Dana ) which's default storage class would be "static", too. Then the error would be seen at link-time.
To dwelve deeper: automatic variable allocation usually (and with GCC always) works by allocating room on the stack. So at function entry (remember: main() IS a function) the current stackpointer (sp) is saved, then the amount of needed memory space subtracted from sp. When this underflows or rather exceeds the amount of stack reserved an error is thrown.
So there is rarely a chance to get informed at link-time of an error like this one