Table of Contents
Embedded in academia - Teaching C
https://www.codeproject.com/Articles/357065/Ten-Fallacies-of-Good-C-Code
http://d3s.mff.cuni.cz/~holub/c_features.html
https://www.chiark.greenend.org.uk/~sgtatham/cdescent/
http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html
http://umich.edu/~eecs381/handouts/CHeaderFileGuidelines.pdf
https://support.dce.felk.cvut.cz/psr/prednasky/jazyk_c/jazykc-en.pdf
https://www.embedded-software-engineering.de/objektorientierte-programmierung-mit-c-a-619620/
http://cs.yale.edu/homes/aspnes/classes/223/notes.html#CProgramStructure
http://devmethodologies.blogspot.com/
https://mechatronics.me.wisc.edu/labresources/DataSheets/NASA-GSFC_C_Programming_Styles-94-003.pdf
https://en.wikibooks.org/wiki/C_Programming/Preprocessor_directives_and_macros#X-Macros
if ((sizeof(struct mystruct) % 8 ) != 0) { printf("error!\n"); exit(1); } #define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)])) BUILD_BUG_ON(sizeof(struct mystruct) % 8));
https://github.com/mcinglis/c-style
Numerical programming
OOP in C
https://dmitryfrank.com/articles/oop_in_c
OOC in C coverage in 21st century C (2nd ed.) book.
https://github.com/nathancharlesjones/Comparison-of-OOP-techniques-in-C
Encapsulation
assertions
Assert usage in real-time systems: https://www.embedded.com/getting-started-with-real-time-assertions/
Other
http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html
Data type widths
64-bit Unix [LP64] 64-bit Windows [LLP64] 32-bit ARM (ARM 64-bit follows LP64) char 8 8 8 short 16 16 16 int 32 32 32 long 64 32 32 long long 64 64 64 pointer 64 64 32
See also https://wiki.osdev.org/X86-64