Hands-on experiments with Modern C++, C interoperability, systems programming, native applications, telemetry, and embedded systems.
This repository documents a progressive collection of hands-on experiments focused on modern C++, interoperability with C, native software development, systems programming, telemetry, and embedded systems.
The laboratory is intended as a long-term learning environment rather than a fixed course. New experiments are added as concepts emerge from open-source contributions, systems engineering studies, and personal projects.
cpp-systems-engineering-lab/
│
├── README.md
├── LICENSE
├── .gitignore
│
├── labs/
│ ├── 01-development-environment/
│ ├── 02-first-native-application/
│ ├── 03-cpp-build-process/
│ ├── 04-c-and-cpp-interoperability/
│ └── 05-command-line-arguments/
│
├── examples/
│
├── notes/
│
└── resources/
Environment setup:
- GCC;
- Clang;
- MSVC;
- CMake;
- Ninja;
- VS Code;
- C/C++ extensions;
- compilation on Windows and subsequently on Linux;
- verification of installed versions.
Result:
#include <iostream>
int main()
{
std::cout << "C++ Systems Engineering Lab\n";
return 0;
}The value of this lab will be present in the complete tutorial on the environment, compilation, and execution, and not just in the code.
Show the entire workflow:
source code
↓
preprocessing
↓
compilation
↓
assembly
↓
linking
↓
native executable
This lab would explain:
.cppfile;- object file;
- linker;
- static and dynamic libraries;
- symbols;
- native executable;
- the difference between compilation and interpretation.
Structure:
Build an application that accepts arguments:
system-info --cpu
system-info --memory
system-info --versionConcepts:
- argc;
- argv;
- argument parsing;
- return codes;
- error messages;
- standard output;
- error output;
- command-line interfaces.