整型值有时会被覆盖为零

int value overwritten to zero sometimes

本文关键字:覆盖 整型      更新时间:2023-10-16

我有一段代码是这样工作的:

boolQwInterface::setSomething(const A& obj, const B& Name, int Val)
{
    bool ret=true;
    LOG_MSG(msg, SIZE, "writing: %s, %s, %d", dbPtr->getDbName(), Name.getRepr().c_str(), Val);
    if(WriteDB(dbPtr->getid(), obj.c_string(), Name.getRepr().c_str(), (void*)&Val)<0)
    {
        LOG_MSG(msg, SIZE, "failed: %s", Name.getRepr().c_str());
        ret=false;
    }
    ....
}

问题是"Val"被覆盖为0,即使调用者正在传递一些真正的值,如40左右。有时,它接受调用者传递的正确值(比如40左右),否则,虽然传递给它的值是40,但它将其作为零。对此有什么想法吗?也许我应该顺便介绍一下?

我使用答案框,因为用换行符更容易描述。

代码中有趣的部分可以简化为:

bool setSomething(int Val) {
   FunctionOne(Val);
   FunctionTwo(&Val);
   ....
}

你真的没有提供足够的信息来帮助你。