The truth is in the standard (3.2 One definition rule) :
No translation unit shall contain more
than one definition of any variable,
function, class type, enumeration type
or template.
[...]
Every program shall contain exactly
one definition of every non-inline
function or object that is used in
that program; no diagnostic required.
The definition can appear explicitly
in the program, it can be found in the
standard or a user-defined library, or
(when appropriate) it is implicitly
defined (see 12.1, 12.4 and 12.8). An
inline function shall be defined in
every translation unit in which it is
used.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…