Когда я работаю над своими личными проектами 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/
?