It is a convenient way of providing some 'namespace structure' to header files. In the Unix world, the main division is between headers like <stdio.h>
which are often fairly general and primarily for use by user programs and not primarily for use by the operating system kernel. By contrast, the headers like <sys/sysinfo.h>
or <sys/types.h>
were intended for use when compiling the kernel - they were more system-y.
Nowadays, it provides a way to separate your project's headers from another project's headers. For example, <openssl/ssl.h>
identifies the header as belonging to the OpenSSL code base.
I don't know that there is a particular name for this style of specifying headers.
Note that if the OpenSSL headers are stored in the directory /usr/local/include/openssl
, then you specify -I /usr/local/include
on the compiler command line. What actually happens is that the header is looked for by prefixing the name in the angle brackets by one of a number of standard directories, of which the default one is /usr/include
on Unix. Therefore, <stdio.h>
is found in /usr/include/stdio.h
and <sys/sysinfo.h>
is found in /usr/include/sys/sysinfo.h
, etc.