Включает в заголовки libclang

Я просматривал заголовки libclang здесь (http://llvm.org/svn/llvm-project/cfe/trunk/include/clang-c/), где я заметил, что почти все заголовки имеют импорт, как в

#include "clang-c/Platform.h" // in CXString.h

// in Index.h
#include "clang-c/Platform.h"
#include "clang-c/CXString.h"

Я не могу понять, почему заголовки имеют префикс clang-c/, поскольку все они находятся в одном каталоге, не должно ли быть скорее ./Platform.h ./CXString.h и тому подобное.


person evanescent    schedule 06.02.2014    source источник


Ответы (1)


Если заголовки в конечном итоге будут установлены в каталоге /usr/local/include/clang-c, то параметр командной строки -I /usr/local/include гарантирует, что будет найден #include "clang-c/Platform.h". Если бы подкаталог не был указан, вам нужно было бы указать -I /usr/local/include/clang-c в командной строке. Он также обеспечивает разделение и разделение; clang-c/Platform.h отделен от файла Platform.h от любого другого пакета.

Обратите внимание, что заголовки, такие как <sys/wait.h>, используют эту схему, но рассматриваемый sys является операционной системой, а заголовки находятся в /usr/include/sys (но вам не нужно указывать -I /usr/include/sys в командной строке компилятора, потому что препроцессор уже ищет в /usr/include по По умолчанию).

person Jonathan Leffler    schedule 06.02.2014
comment
Разделение и разделение, спасибо за объяснение. - person evanescent; 06.02.2014