1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
/*!
* \page cfu-lessons-learned-page crystal-facet-uml lessons learned
*
* \image html crystal_facet_uml.png
* \image latex crystal_facet_uml.pdf "" width=3cm
*
* \section cfu-compiler Compiler Anomalies
*
* Compiler optimizations cause strange effects.
*
* \subsection cfu-optimizations Automatic optimizations
*
* Automatic optimizations change the code and then produce warnings.
*
* mut_A + const_B < mut_C
*
* may implicitly be optimized to
*
* (mut_A - mut_C) + const_B < 0
*
* which is a similar expression but differs when looking at overflows.
*
* \subsection cfu-wrong_warnings Wrong warnings from inline functions
*
* Some warnings are simply not correct - for whatever reason, the compiler cannot calculate strlen
* but then warns on subsequent wrong positions in memcpy behind an if-condition, for example:
*
* warning: array subscript 18446744073709551549 is above array bounds of ‘char[64]’
*
* Solve this by disabling the warnings by:
*
* #pragma GCC diagnostic ignored "-Warray-bounds"
*
* \section cfu-posix Posix Variants
*
* \subsection Locale-Dependencies
*
* Some functions are locale-dependant:
*
* strtod
*
* parses floating point numbers where the decimal separator is either a dot or a comma.
*
* \section cfu-lessons-learned-apx Appendix
* \author Copyright 2024-2025 Andreas Warnke; Email-contact: cfu-at-andreaswarnke-dot-de
*/
|