Jump to content

    

Как объявить массив строк-констант в 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) );

Share this post


Link to post
Share on other sites
...

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

...

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

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

#define flash __attribute__((__progmem__))

char* LangStrings[][3] flash = {

/*      Englisch                Deutsch                 Le franзais*/

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

Edited by бомж

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this