IMO, в 2010 году нет необходимости быть совместимым с "C". Просто используйте C ++ и все его преимущества (STL, boost, все это джаз ...)
AFAIK, размещение кода в заголовочных файлах не является обычной практикой, обычно код помещается в файлы реализации (.c, .cpp, ...).
Размещение кода в файлах C / CPP (вместо файлов заголовков) позволит вам оптимизировать зависимости времени компиляции (предварительные объявления, PIMPL, ...) и ограничить видимость непубличных данных, которые не нужны «пользователям» какой-то кусок кода, чтобы увидеть.
Использование стандартных библиотек поможет стабильности, удобочитаемости и поддержанию кода в долгосрочной перспективе, уменьшая потенциальные ошибки, которые могут / могут возникнуть при работе со сложными структурами и алгоритмами (например, проще иметь дело с std :: vector чем массивы и std :: string чем char *)
М.