如何解决编译错误"获取临时数组的地址"在android ndk 10 e但不在Xcode中?

时间:2015-08-10 03:22:29

标签: android c++ xcode android-ndk

我创建了一些接受像这样的对数组的函数:

void test(std::pair<std::string,bool> v[],int size){
    //I need to use lambda so copy content to local variable first
    std::vector<std::pair<std::string,bool> > v_cp(v,v+size);
    //some lambda
}

然后调用它:

test((std::pair<std::string,bool>[]){std::make_pair("idle",true)},1);

代码可以在Xcode中编译,但不能在android ndk中编译:

error: taking address of temporary array
 test((std::pair<std::string,bool>[]){std::make_pair("idle",true)},1);
                                                                    ^

是否有编译标志可以解决问题而无需更改代码?还是有其他语法来解决这个问题?

1 个答案:

答案 0 :(得分:0)

您正在使用C样式的开放数组,您可以像这样初始化:

std::pair<std::string, bool> arr[] = { std::make_pair("idle", true) };
test(arr, 1);

我想你必须有理由在你的函数参数中有一个C风格的开放数组,否则vector会更好地传递任意数量的数组元素。