Ну так а зачем придумывать все тоже самое заного при том же результате?
Чтобы избежать некрасивых букв?
#define NOT_A_GOTO goto
Красиво? Не зло?
Чтобы мозги не заворачивались.
1.Если я вижу цикл while или do-while, то я чётко вижу где начало и конец цикла. И понимаю порядок выполнения инструкций.
2. Если я вижу вызов функции, то я уверен что после завершения функции выполнение кода продолжится с места вызова.
3. Если я вижу фразу goto, а метки не вижу, то куда перейдёт управление и к каким последствиям это может привести - совершенно непонятно.