This implements a menu to be shown on a LCD display (4 lines by 20 characters), connected to a microcontroller (STM32, Arduino, you name it) and controlled by a rotary encoder (alternatively it could be used with 3 buttons: up, down and select).
It uses a classic linked list and a intermediate menu layer.
This is using char* instead of string, because the latter is not available on STM32F0* controllers.
In this state, menu lines are printed to the console for development and debugging.