Перейти к содержанию
    

Как объявить массив строк-констант в GCC?

+1

Только я подобные макросы стараюсь называть со словом CASE, например, CASE_MSG, CASE_STATUS_STR и т.п.

DEF — это для определений строк/структур для обращения к ним из разных мест по имени.

 

Вроде и непринципиально, но в итоге читабельность повышает.

 

Для enum часто бывает так

#define CASE_ENUM_STR(a) case a: return PSTR( #a )

typedef enum { ok, packet_error, invalid_command } status_t;

const prog_char * status_str(status_t status)
{
        switch(status) {
                CASE_ENUM_STR(ok);
                CASE_ENUM_STR(packet_error);
                CASE_ENUM_STR(invalid_command);
        }
}

И потом где-то, например

      log_printf( PSTR("Operation complete, %S\n"), status_str(status) );

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...

Вот что-то не получается объявить массив строк констант. Сейчас эт осделано так:

...

А как всё тоже самое, только не создавая для каждой строки отдельную константу? Как бы всё внести под скобки?

У меня получилось вот так:

#define flash __attribute__((__progmem__))

char* LangStrings[][3] flash = {

/*      Englisch                Deutsch                 Le franзais*/

        {"Error:",               "Fehler:",              "Erreur:"},
        {"      OK",             "      IO",             "      OK"},
        {"Please wait",          "Bitte warten",         "attendre"}
}

Изменено пользователем бомж

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...