Skip to content

Commit 94d6123

Browse files
authored
relative path should be from within the same component
... files that exist at a relative path to the file containing the `#include` statement (from within the same component or project)
1 parent f458ada commit 94d6123

File tree

1 file changed

+3
-4
lines changed

1 file changed

+3
-4
lines changed

CppCoreGuidelines.md

+3-4
Original file line numberDiff line numberDiff line change
@@ -19189,16 +19189,15 @@ The [standard](http://eel.is/c++draft/cpp.include) provides flexibility for comp
1918919189
the two forms of `#include` selected using the angle (`<>`) or quoted (`""`) syntax. Vendors take
1919019190
advantage of this and use different search algorithms and methods for specifying the include path.
1919119191

19192-
Nevertheless, the guidance is to use the quoted form for including files that exist at a relative path to the file containing the `#include` statement and to use the angle bracket form everywhere else, where possible. This encourages being clear about the locality of the file relative to files that include it, or scenarios where the different search algorithm is required. It makes it easy to understand at a glance whether a header is being included from a local relative file versus a standard library header or a header from the alternate search path (e.g. a header from another library or a common set of includes).
19193-
Note that this guidance applies to the including file as it exists in the location where it is typically authored/edited, and not any other location to which it may subsequently be copied or installed or otherwise made available to the implementation.
19192+
Nevertheless, the guidance is to use the quoted form for including files that exist at a relative path to the file containing the `#include` statement (from within the same component or project) and to use the angle bracket form everywhere else, where possible. This encourages being clear about the locality of the file relative to files that include it, or scenarios where the different search algorithm is required. It makes it easy to understand at a glance whether a header is being included from a local relative file versus a standard library header or a header from the alternate search path (e.g. a header from another library or a common set of includes).
1919419193

1919519194
##### Example
1919619195

1919719196
// foo.cpp:
1919819197
#include <string> // From the standard library, requires the <> form
1919919198
#include <some_library/common.h> // A file that is not locally relative, included from another library; use the <> form
19200-
#include "foo.h" // A file locally relative to foo.cpp, use the "" form
19201-
#include "foo_utils/utils.h" // A file locally relative to foo.cpp, use the "" form
19199+
#include "foo.h" // A file locally relative to foo.cpp in the same project, use the "" form
19200+
#include "foo_utils/utils.h" // A file locally relative to foo.cpp in the same project, use the "" form
1920219201

1920319202
##### Note
1920419203

0 commit comments

Comments
 (0)