|
|
|
|
@ -1,6 +1,6 @@
|
|
|
|
|
# <a name="main"></a>C++ Core Guidelines
|
|
|
|
|
|
|
|
|
|
April 19, 2017
|
|
|
|
|
April 22, 2017
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Editors:
|
|
|
|
|
@ -17638,6 +17638,7 @@ Iostream rule summary:
|
|
|
|
|
* [SL.io.1: Use character-level input only when you have to](#Rio-low)
|
|
|
|
|
* [SL.io.2: When reading, always consider ill-formed input](#Rio-validate)
|
|
|
|
|
* [???](#???)
|
|
|
|
|
* [SL.io.10: Unless you use `printf`-family functions call `ios_base::sync_with_stdio(false)`](#Rio-sync)
|
|
|
|
|
* [SL.io.50: Avoid `endl`](#Rio-endl)
|
|
|
|
|
* [???](#???)
|
|
|
|
|
|
|
|
|
|
@ -17649,6 +17650,24 @@ Iostream rule summary:
|
|
|
|
|
|
|
|
|
|
???
|
|
|
|
|
|
|
|
|
|
### <a name="Rio-sync"></a>SL.io.10: Unless you use `printf`-family functions call `ios_base::sync_with_stdio(false)`
|
|
|
|
|
|
|
|
|
|
##### Reason
|
|
|
|
|
|
|
|
|
|
Synchronizing `iostreams` with `printf-style` I/O can be costly.
|
|
|
|
|
|
|
|
|
|
##### Example
|
|
|
|
|
|
|
|
|
|
int main()
|
|
|
|
|
{
|
|
|
|
|
ios_base::sync_with_stdio(false);
|
|
|
|
|
// ... use iostreams ...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
##### Enforcement
|
|
|
|
|
|
|
|
|
|
???
|
|
|
|
|
|
|
|
|
|
### <a name="Rio-endl"></a>SL.io.50: Avoid `endl`
|
|
|
|
|
|
|
|
|
|
### Reason
|
|
|
|
|
@ -17686,9 +17705,20 @@ the choice between `'\n'` and `endl` is almost completely aesthetic.
|
|
|
|
|
|
|
|
|
|
C standard library rule summary:
|
|
|
|
|
|
|
|
|
|
* [S.C.1: Don't use setjmp/longjmp](#Rclib-jmp)
|
|
|
|
|
* [???](#???)
|
|
|
|
|
* [???](#???)
|
|
|
|
|
* [???](#???)
|
|
|
|
|
|
|
|
|
|
### <a name="Rclib-jmp"></a>SL.C.1: Don't use setjmp/longjmp
|
|
|
|
|
|
|
|
|
|
##### Reason
|
|
|
|
|
|
|
|
|
|
a `longjmp` ignores destructors, thus invalidating all resource-management strategies relying on RAII
|
|
|
|
|
|
|
|
|
|
##### Enforcement
|
|
|
|
|
|
|
|
|
|
Flag all occurences of `longjmp`and `setjmp`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# <a name="S-A"></a>A: Architectural Ideas
|
|
|
|
|
|