Возвращение const char ** из статической const структуры - PullRequest
3 голосов
/ 15 апреля 2011

a.cpp:

static const struct A {
    int a1;
    const char ** a2;
} as[] = {
    {1,(const char *[]){"LOL",NULL}},
    {2,(const char *[]){"LOL","LOL2",NULL}}
};

const char ** getA(int a) {
    int i = 0;
    for(;i< sizeof(as)/sizeof(struct A);i++){
       if (as[i].a1 == a)
           return as[i].a2;
    }
}

Существует ли проблема контекста или области действия при возвращении const char ** из статической структуры const, инициализированной статически?

Ответы [ 3 ]

1 голос
/ 15 апреля 2011

Нет, это нормально - составные литералы, которые находятся вне тела функции, имеют статическую длительность хранения.

1 голос
/ 15 апреля 2011

Конечно, нет проблем с областью видимости. Область действия относится к переменным, а не к значениям. (Существует проблема с отсутствием { в вашем коде.)

0 голосов
/ 15 апреля 2011

Вы пытаетесь поместить массив указателей переменного размера в структуру фиксированного размера. Это не может быть хорошо.

...