Например, если у меня есть файл с именем foo.h, можно всегда просто включить его, выполнив:больше #include пути когда-либо на самом деле нужно?
#include "foo.h"
или мне иногда приходится делать что-то вроде:
#include "bar/foobar/foo.h"
EDIT - они просто используются, чтобы сократить время компиляции, ограничив поиск файла?
Предполагается, что компилятор будет искать подкаталоги, если он не найдет файл в любом из каталогов include. Что заставляет вас думать, что? – sepp2k