Not so much because of the compiler, but because of the mostly non-existent linker.
Yes this could indeed be the case...
Because Dark_Samurai's code would've never gotten through a linker ever.
Why?
Edit: I guess you ment that the linker has no address for the function because the second *.c file is not compiled (because of the missing feature to compile multiple translation units)? So normally you should get the error during linking, not during runtime...