Этот пример показывает как реализовать очень простой препроцессор и добавить обработку директивы #include, которая позволяет повторно использовать общий код. Препроцесоор просто вставляет код вместо директивы, причем проблемы с круговыми взаимовключениями обрабатываются автоматически.
В примере разбираются темы: