Thinking about OPs problem some more I believe this is something we should eventually try to fix - it's a bug. It's perfectly reasonable that in two different implementation files we reuse the same symbol/function spec and maybe for totally different purposes. I've rejigged OP's project to use our build system with targets for each executable in the attachment. Now open the project, switch to the symbol tab, show "Current file's symbols" and double click on main or foo1 and see you will always be taken to the same file no matter which one is active. For someone interested in say, project refactoring, I think CC should keep data about all copies around.
[attachment deleted by admin]