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结构返回const char **
时是否存在上下文或范围问题?
答案 0 :(得分:1)
肯定没有范围问题。范围适用于变量,而不适用于值。 (但是代码中缺少{
存在问题。)
答案 1 :(得分:1)
不,没关系 - 在函数体外发生的复合文字具有静态存储持续时间。
答案 2 :(得分:0)
您正在尝试将可变大小的指针数组放入固定大小的结构中。这不可能是好事。