Когда я работаю над своими личными проектами C и C++, я обычно помещаю file.h и file.cpp в тот же каталог, а затем file.cpp может ссылаться на file.h с директивой #include "file.h".
Однако обычно обнаруживают библиотеки и другие проекты (например, linux kernel и freeRTOS), где все файлы .h находятся внутри каталога include/, а файлы .cpp остаются в другом каталоге. В этих проектах файлы .h также включаются в #include "file.h" вместо #include "include/file.h" как я надеялся.
У меня есть некоторые вопросы обо всем этом:
- Каковы преимущества этой организации файловой структуры?
- Почему файлы
.hвнутриinclude/включены с#include "file.h"вместо#include "include/file.h"? Я знаю, что настоящий трюк находится внутри какого-либо Makefile, но лучше ли это делать, а не делать ясным (в коде), что файл, который мы хотим включить, действительно находится в каталогеinclude/?