Есть некий базовый класс:
class uart { protected: const uint8_t num; const uint8_t channel; volatile uint32_t time; uint8_t rxCount; uint8_t echoMode; __uartState state; uint32_t tx_pointer; uint32_t rx_pointer; uint32_t size; uint32_t txSize; uint8_t rxEchoSize; uint8_t error[2]; uint16_t crc; public: uart(const uint8_t n, const uint8_t c) : num(n), channel( c) { // Конструктор time = tx_pointer = rx_pointer = size = 0; error[0] = error[1] = 0; }; ...
есть от него наследник:
class mco_uart : public uart { public: uint8_t buf[2][MCO_BUFF_SIZE]; mco_uart(const uint8_t n, const uint8_t c) : uart (n, c) {}; // Конструктор ...
создаю экземпляры класса:
mco_uart extUart[EXTUART_NUM] = { mco_uart(0, 4 << 4), mco_uart(0, 5 << 4), mco_uart(0, 6 << 4), mco_uart(0, 7 << 4), mco_uart(1, 4 << 4), mco_uart(1, 5 << 4), mco_uart(1, 6 << 4), mco_uart(0, 1 << 4), mco_uart(0, 2 << 4), mco_uart(0, 3 << 4), mco_uart(1, 0 << 4), mco_uart(1, 1 << 4), mco_uart(1, 2 << 4), mco_uart(1, 3 << 4) };
В результате переменные num и channel равны 0. В иаре всё работает то есть значения переменным присваивается правильно, а в gcc присваивания нет. Что я делаю не так? На плюсах пишу первый раз, до этого писал только на чистом C. Хочется перейти на gcc и не получается! Компилятор от клёна kgp_arm_eabi_20100509
|