Как избежать двойного включения: директива препроцессора или make-файлы

Я работаю над переходом от программ франкенштейна и однофайловых тысяч строк к хорошо структурированным и организованным многофайловым программам. Сейчас кажется естественным (наивно) создать любовный треугольник из включений заголовков для трех моих файлов:
file_1 включает file_2, file_4
file_2 включает file_3, file_4
file_3 включает file_1 .... и т. д.
В этих файлах есть переменные, методы, структуры и т. Д., Которые мне нужны между другими файлами.

И, конечно же, я получаю ошибки двойного включения.

Мой вопрос: следует ли мне избегать этих проблем, используя директивы препроцессора в заголовках (например, включая структуры, методы и т. Д. Полностью в заголовке), или следует ли мне компилировать с использованием make-файла (который, как я слышал, также можно использовать для решения этой проблемы, но я никогда его не создавал)?

5
задан Brian Tompsett - 汤莱恩 19 June 2016 в 18:31
поделиться