Как хранить PORT
или DDR
или такие как статические константы? То, что я пытаюсь todo, вместо использования #define TEMPERATURE_PORT PORTC
внутри моего заголовка класса, я хотел бы сохранить статический член константы с этим значением и инициализировать это внутри параметра settings.h, чтобы все мои значения определялись в одном месте.сохранение ПОРТА как статического константного элемента
class Temperatur
{
private:
static const volatile uint8_t m_port;
};
settings.h, который получает включены последний
const uint8_t Temperatur::m_port = PORTC;
Это acutally вызывает
Error 24 'Temperatur::m_port' cannot be initialized by a non-constant expression when being declared
Я использую внутри присваивания в settings.h, которые получают право включены после этого файла:
#include "Sensors/Temperatur.h"
#include "Sensors/Microphone.h"
//... some more includes here
//load the static and const settings
#include "settings.h"
Это уже работает для некоторых других значений, но не для PORT
и DDR
.
Некоторые больше информации: порт определяется как:
#define PORTC _SFR_IO8(0x08)
, который определяется как:
#define _SFR_IO8(io_addr) ((io_addr) + __SFR_OFFSET)
И это фиксированное значение, так как __SFR_OFFSET определяется как 0x00 или 0x20 в зависимости по некоторому значению марко.
Возможно, это определение макро для _SFR_IO8
, потому что оно имеет простой расчет? Если да, то как это решить?
Какой тип 'PORTC'? В каком файле вы его присваиваете 'm_port'? –
'PORTC' определяется как' _SFR_IO8 (0x08) 'и я назначаю его' m_port' внутри 'settings.h', который я включаю в основной файл сразу после включения других частей системы. – BennX