то же самое с битовыми полями. я вижу в этом большой минус: отсутствие явного маскирования искажает алгоритм работы, и вводит в заблуждение. если алгоритм не просматривается по коду - это, с моей точки зрения, плохо.
для полностью "прозрачной" реализации я бы сделал как-то так:
Код: Выделить всё
typedef enum{
DIR_FIRST,
// добавлять ниже, но не выше!
DIR_NORD,
DIR_EAST,
DIR_SOUTH,
DIR_WEST,
// ниже не добавлять!
DIR_LAST
} direction_t;
direction_t rotate_right(direction_t current_dir){
if(++current_dir >= DIR_LAST) current_dir = DIR_FIRST + 1;
return current_dir;
}
direction_t rotate_left(direction_t current_dir){
if(--current_dir == DIR_FIRST) current_dir = DIR_LAST - 1;
return current_dir;при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!


