The proper distinction is exactly what paths are searched for the include files.
<...>
searches the "system" paths, while "..."
searches both the system an "local" paths.
From the GCC manual:
-I dir
Add the directory dir to the list of directories to be searched for header files. Directories named by -I
are searched before the standard system include directories. If the directory dir is a standard system include directory, the option is ignored to ensure that the default search order for system directories and the special treatment of system headers are not defeated . If dir begins with =
, then the =
will be replaced by the sysroot prefix; see --sysroot
and -isysroot
.
-iquote dir
Search dir only for header files requested with #include "file"
; they are not searched for #include <file>
, before all directories specified by -I and before the standard system directories. If dir begins with =
, then the =
will be replaced by the sysroot prefix; see --sysroot
and -isysroot
.
Note that the Arduino IDE only uses -I
, so there is little to no distinction between <...>
and "..."
.
Commonly the main usage of the distinction is to use <...>
to include system or library headers, and "..."
to include headers that are part of the actual sketch / application, since the "current directory" is automatically added as a local include path.