问题描述
||
a.cpp:
static const struct A {
int a1;
const char ** a2;
} as[] = {
{1,(const char *[]){\"LOL\",NULL}},{2,\"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返回ѭ1时是否存在上下文或范围问题?
解决方法
不,那很好-在函数主体外部出现的复合文字具有静态存储持续时间。
,当然没有范围问题。范围涉及变量,而不是值。 (不过,在您的代码中缺少
{
存在问题。)
,您正在尝试将大小可变的指针数组放入固定大小的结构中。那不是很好。