I\'m not quite sure about this in the standards. Say I have three files like this:
foo.h
#include
inline void foo();
Odds are that your clang uses C99 inline semantics. In C99, if one of your functions doesn't use "inline" or does include "extern", then the definition is an "external definition", which can only appear once in the program. See inline in C99.
In C++, your program is fine. In Clang SVN, this bug has been fixed and your program should work fine.