Vielleicht ist das einfacher zu verstehen wen die Code etwas mehr Strukturiert wiedergegeben wird. Ich habe Tab-zeichen zugefügt so das alle Zeilen im gleichen {}-Hierarchie-niveau die selbe Einsprung-abständen haben.

Tip: Setze deine Code zwisschen [ code ] Schreib hier deine Code [ / code] Tags in dein Bericht. (Nur die Leer-zeichen entfernen zwischen die [ ] Klammern !) Dann wird es isoliert von dein normale Text in ein Spezielles Fenster. Und werden auch Zeilen-einsprung behalten.

Code:
void moveCommand(behaviour_command_t * cmd)
 {
    if(cmd->move_value > 0) // any move/rotate commands?
    {
        if(cmd->rotate) rotate(cmd->speed_left, cmd->dir, cmd->move_value, false); 
        else if(cmd->move) move(cmd->speed_left, cmd->dir, DIST_MM(cmd->move_value), false);
        
// von Valen: Das nächste gehört nicht mehr zu den "if else if" Gesetzen. Weil das hier oben mit ein Punkt-komma abgeschlossen ist. Und kein tieferes {} Niveau verwendet wird.

        cmd->move_value = 0; // clear move value - the move commands are only
        // given once and then runs in background.
    }
    else if(!(cmd->move || cmd->rotate)) // just move at speed? 
    {
        changeDirection(cmd->dir);
        moveAtSpeed(cmd->speed_left,cmd->speed_right);
    }
    else if(isMovementComplete()) // movement complete? --> clear flags!
    {
        cmd->rotate = false;
        cmd->move = false;
    }
 }