title: How to deal with symbol collisions between statically linked libraries?
body: <p>One of the most important rules and best practices when writing a library, is putting all symbols of the
  library into a library specific namespace. C++ makes this easy, due to the <code>namespace</code> keyword. In
  C the usual approach is to prefix the identifiers with some library specific prefix.</p>
  
  <p>Rules of the C standard put some constraints on those (for safe compilation): A C compiler may look at only the first
  8 characters of an identifier, so <code>foobar2k_eggs</code> and <code>foobar2k_spam</code> may be interpreted as the same
  identifiers validly – however every modern compiler allows for arbitrary long identifiers, so in our times
  (the 21st century) we should not have to bother about this.</p>
  
  <p>But what if you're facing some libraries of which you cannot change the symbol names / idenfiers? Maybe you got
  only a static binary and the headers or don't want to, or are not allowed to adjust and recompile yourself.</p>