You can't just initalize every un-initialized external variable to zero, because multiple module (file) programs would result in multiple declarations (in the assembly code) for variables mentioned in more than one file ...