http://www.parashift.com/c++-faq-lit...c-and-cpp.html