mirror of
https://github.com/isocpp/CppCoreGuidelines.git
synced 2024-03-22 13:30:58 +08:00
Fix #903.
This commit is contained in:
parent
ad6f863152
commit
52aa9ba997
|
@ -17298,18 +17298,29 @@ Flag `using namespace` at global scope in a header file.
|
||||||
|
|
||||||
To avoid files being `#include`d several times.
|
To avoid files being `#include`d several times.
|
||||||
|
|
||||||
|
In order to avoid include guard collisions, do not just name the guard after the filename.
|
||||||
|
Be sure to also include a key and good differentiator, such as the name of library or component
|
||||||
|
the header file is part of.
|
||||||
|
|
||||||
##### Example
|
##### Example
|
||||||
|
|
||||||
// file foobar.h:
|
// file foobar.h:
|
||||||
#ifndef FOOBAR_H
|
#ifndef LIBRARY_FOOBAR_H
|
||||||
#define FOOBAR_H
|
#define LIBRARY_FOOBAR_H
|
||||||
// ... declarations ...
|
// ... declarations ...
|
||||||
#endif // FOOBAR_H
|
#endif // LIBRARY_FOOBAR_H
|
||||||
|
|
||||||
##### Enforcement
|
##### Enforcement
|
||||||
|
|
||||||
Flag `.h` files without `#include` guards.
|
Flag `.h` files without `#include` guards.
|
||||||
|
|
||||||
|
##### Note
|
||||||
|
|
||||||
|
Some implementations offer vendor extensions like `#pragma once` as alternative to include guards.
|
||||||
|
It is not standard and it is not portable. It injects the hosting machine's filesystem semantics
|
||||||
|
into your program, in addition to locking you down to a vendor.
|
||||||
|
Our recommendation is to write in ISO C++: See [rule P.2]((#Rp-Cplusplus).
|
||||||
|
|
||||||
### <a name="Rs-cycles"></a>SF.9: Avoid cyclic dependencies among source files
|
### <a name="Rs-cycles"></a>SF.9: Avoid cyclic dependencies among source files
|
||||||
|
|
||||||
##### Reason
|
##### Reason
|
||||||
|
|
Loading…
Reference in New Issue
Block a user