M@ik (05.03.2009 08:39, просмотров: 664) ответил Alex B. на Статья про атомарный доступ к битовым полям.
Из исходника узнал много нового для себя о препроцессоре Си=) Однако, так и не понял, зачем нужно было городить трехэтажный макрос BFA с переменным числом параметров, в котором действие определяется по значению первого параметра? Не лучше ли сделать 5 отдельных макросов, каждый из которых выполняет свою задачу:
#define BFA_WRITE( reg_name, field_name, value )
#define BFA_READ( reg_name, field_name)
#define BFA_SET( reg_name, field_name, mask )
#define BFA_CLEAR( reg_name, field_name, mask )
#define BFA_INV( reg_name, field_name, mask )
ИМХО, это не ухудшит функциональность, зато сделает работу с макросами более прозрачной, позволит избавиться от парметров доступа, __BFA_COMM_GET и __BFA_COMM_ERR, тернарных операторов, переменного числа параметров. Может тогда код можно будет понять не читая длинное описание =)