I have a set of includes that reside in a far off directory meaning that including them requires a long include, such as:
#include \"../../Path/to/my/file.h\
The compiler will do macro replacement on an #include
line (per C 2011 [N1570] 6.10.2 4), but the semantics are not fully defined and cannot be used to concatenate file path components without additional assistance from the C implementation. So about all this allows you to do is some simple substitution that provides a complete path, such as:
#define MyPath "../../path/to/my/file.h"
#include MyPath
What you can do with most compilers and operating systems is:
-I
switch).#include "FancyStuff/file.h"
becomes equivalent to ../../path/to/FancyStuff
because there is a symbolic link named FancyStuff
that points to the longer path.You can't customise the search path for include files like this, but you can tell the compiler where to look for include files. Many compilers -I
option for that, e.g.:
gcc -c stuff.c -I/path/to/my/ -I/path/to/other/
If that makes your compilation command too long, you should write a Makefile or, if you are working in Visual Studio or similar IDE, customise the search path in your project settings.