Пища для размышлений: какая альтернатива?
#include "pathPlan.h"
#include "exception.h"
#include "world.h"
#include "exception.h" // uh ?
Я всегда опасался иметь слишком много путей, объявленных в переменной include paths, проблема в том, что чем больше путей, тем больше вероятность того, что вы столкнетесь с именем файла, и это на самом деле раздражает отладку. 1004 *
Я предпочитаю использовать это:
// 3rd party libraries
#include <3rdParty1/foo.h>
#include <3rdParty2/foo.h>
// Projects I depend on
#include "myProject1/bar.h"
// Current project, from the include directory
#include "currentProject/foobar.h"
#include "currentProject/another.h"
// Current project, from the source directory (private includes)
#include "../world.h"
#include "../detail/helper.h"
Что означает для данного проекта "вещь", у меня есть следующий файл:
// in thingy/1-3-0-2/include/thingy/foo.h
namespace thingy // base namespace is project name
// namespace hierarchy identical to folders hierarchy
{
}
И тогда у меня в строке компиляции есть следующее:
-I${Repository}/thingy/1-3-0-2/include
Конечно, это немного больше печатать, но это помогает сохранить порядок:
- корреляция пространства имен / папки облегчает поиск местоположения файла
- Префикс проектов делает невозможным смешивание двух файлов из разных проектов, даже если они имеют одинаковые имена