Я создаю программное обеспечение для проекта Linux + AVR Arduino. Очевидно, что вся работа разделена на несколько проектов в Eclipse (я не использую Arduino IDE). Я хотел бы использовать общие, в основном строковые, константы для всех этих проектов. Я также должен сэкономить оперативную память микроконтроллера, поэтому необходимы константы времени компиляции. Как мне лучше всего это реализовать? Моя идея - создать отдельный проект только для заголовков для этих констант.
Использование:
class A {
public:
static const char * const STRING;
static const unsigned char BOOL;
};
недостаточно, потому что я хотел бы иметь возможность объединять строковые константы следующим образом:
class A {
public:
static const char * const STRING_PART1;
static const char * const STRING_PART2;
static const unsigned char BOOL;
};
const char * const A::STRING_PART1 = "PART1_";
//const char * const A::STRING_PART2 = A::STRING_PART1 + "PART2"; //obviously won't compile
//const char * const A::STRING_PART2 = strcat("PART2", A::STRING_PART1); //this is not compile-time
Я тоже не хочу использовать define
. Я хотел бы использовать:
class A {
public:
static const std::string STRING_PART1;
static const std::string STRING_PART2;
}
, который допускает конкатенацию строк и (AFAIK) во время компиляции, но std :: string недоступен в проектах avr - или я здесь не прав и просто не знаю, как его использовать.
Любая помощь приветствуется.