我在AOSP中发现了以下代码片段:
[diff "localizablestrings"]
textconv = "iconv -f utf-16 -t utf-8"
ProcessState::handle_entry* ProcessState::lookupHandleLocked(int32_t handle)
{
const size_t N=mHandleToObject.size();
if (N <= (size_t)handle) {
handle_entry e;
e.binder = NULL;
e.refs = NULL;
status_t err = mHandleToObject.insertAt(e, N, handle+1-N);
if (err < NO_ERROR) return NULL;
}
return &mHandleToObject.editItemAt(handle);
}
的原型是:
Vector.insertAt
因此很显然ssize_t insertAt(const TYPE& prototype_item, size_t index, size_t numItems = 1);
正在将对局部变量的引用插入向量中。由于C ++标准未定义传递对局部变量的引用的结果,因此我想知道为什么AOSP开发人员会像这样编写代码,这不是一个坏习惯吗?