ID:danglingTemporaryLifetime 使用临时指针。: C: 有条件地改变函数内部 const char 函数参数的值

ID:danglingTemporaryLifetime Using pointer to temporary.: C: conditionally change value of const char function parameter inside the function

假设我有一个 C 函数:

MyFunction(const char *value, bool trigger)

在内部,根据 trigger 变量的值,我想使用提供给函数的 value 或简单地用其他 const char 字符串覆盖它由不同的函数返回,例如:

MyFunction(const char *value, bool trigger) {
if (trigger) {
     value = anotherFunctionReturningConstChar().c_str();
}
// do processing here

}

考虑到指针及其类型,实现此目的的正确方法是什么。据我所知,我不能简单地更改函数参数的值,我需要使用一些第三个变量,该变量应设置为 valueanotherFunction.[=18 的结果=]

我现在在静态分析器中收到以下错误: [ID:danglingTemporaryLifetime] 使用临时指针。

这是什么意思,我该如何克服它?

不,您可以完全按照您的方式分配给函数参数。这不会以任何方式影响调用者。

使用 MyFunction(void *value, bool trigger) 保存指向函数或 const char* 的指针,然后将值转换为所需的对象,但我认为这是无用的。