ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
26 апреля
610657 Топик полностью
Скрипач, пророк (23.07.2015 09:39 - 24.07.2015 10:47, просмотров: 634) ответил =AlexD= на Все вы дураки и не лечитесь :-)
О ерунде спорить изволите, а главного не замечаете. Такие "имена" нельзя использовать в качестве индексов в массивах. А я, например, частенько.  extern uint16_t IOPort; #define IO_OUTS_MASK (0xFF00) // di-16 0x0000, 8x8 0xFF00 #define gen_io_D 0b11111000 #define gen_io_B 0b00000111 inline uint16_t PackPins(uint8_t c, uint8_t d, uint8_t b){ b &= gen_io_B; d &= gen_io_D; return ((b|d) << 8) | c; } #define UnPackCPins(port) ( port & 0xFF) #define UnPackDPins(port) ((port >> 8) & gen_io_D) #define UnPackBPins(port) ((port >> 8) & gen_io_B) inline void _On(char addr){ PORTB |= UnPackBPins(_BV(addr) & IO_OUTS_MASK); PORTD |= UnPackDPins(_BV(addr) & IO_OUTS_MASK); } inline void _Off(char addr){ PORTB &= ~(UnPackBPins(_BV(addr) & IO_OUTS_MASK)); PORTD &= ~(UnPackDPins(_BV(addr) & IO_OUTS_MASK)); }
... но не любой ценой.