Я создаю программное обеспечение для проекта 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 - или я здесь ошибаюсь и просто не знаю, как его использовать.
Любая помощь приветствуется.