
Explore the GNU make workflow, including targets, dependencies, and rules, and learn how dates and time stamps trigger builds across POSIX, Unix, Linux, and Windows environments.
Review how the make process compiles main.cpp to main.o, links with libraries to form an executable, and uses the -o option to name it main.run while tracking dependencies.
Set up the GNU C/C++ study environment on Windows with cygwin, download and extract study 1000, and explore generations of C++ using stdio.h, C standard IO, and iostream with namespaces.
Review the GNU toolchain from the command line through preprocessor, compiler, and linker stages, and learn how symbols and debugging with gdb fit into building portable C/C++ code.
Use g++ -g to include symbols, then debug by disassembling main and inspecting stack parameters and printf calls, while exploring name mangling and demangling.
Explore exception management in C++ using try, catch, and throw to handle errors, prevent crashes, and take corrective actions when operations fail.
Explore how to implement finite state machines with function pointers and arrays in C++, using shared signatures, enums, and simple structures to manage states and transitions.
Review primitive data types and register sizes. Explain how strings are null-terminated character arrays and explore memory representation, plus a dumper program that prints values with format specifiers.
Explore integer data type sizes across architectures, and learn about l value and r value, modulus and other operators in C and C++.
Explore string and array activity: how name mangling forces const char* in puts, why non-const pointers trigger warnings or compile errors, and how C++98/03 differ from C++11/14 in legacy code.
Examine how a C++ struct mirrors a class, with default public visibility, and how a function pointer inside a struct can yield a class while wrapping legacy C types.
C/C++ 2000: GNU For Intermediate Students will review the key language-centric concepts modern C/C++ professionals will need to be aware of. Building upon the concepts presented in GNU C/C++ 1000, students should be familiar with the complete keyword set as presently defined by the modern standard for C programmers.
Classics Matter!
Writing C/C++ for decades I believe students need to also know how to work with those huge legacy code bases? Never soon to be updated, if it isn't broken then we should understand why many will want us to work with those classic standards!
Rollings Review
If C and / or C++ are new to you, we start our with a review of the core concepts. I think you'll appreciate the review, as well as the additional extended topics that we're going to be presenting in this 2000 level - or intermediate C/C++ educational opportunity. If you are familiar with C and basic C++ then you will also feel confident jumping right into this intermediate, 2000 level, lesson set.
Note also that we will be talking about a state machine and revisiting many concepts that were presented in the C/C++ 1000 series.
Additional Learning 'Ops
The reason why I like to present a concept more than once and in several different ways is as to make sure people understand the key concepts that are required for topical mastery. No practice, no glory?
So I hope you'll enjoy the review and if you didn't take C++ 1000 you might want to enroll in the beginning programming lessons as well.