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
}
考虑到指针及其类型,实现此目的的正确方法是什么。据我所知,我不能简单地更改函数参数的值,我需要使用一些第三个变量,该变量应设置为 value
或 anotherFunction
.[=18 的结果=]
我现在在静态分析器中收到以下错误:
[ID:danglingTemporaryLifetime] 使用临时指针。
这是什么意思,我该如何克服它?
不,您可以完全按照您的方式分配给函数参数。这不会以任何方式影响调用者。
使用 MyFunction(void *value, bool trigger)
保存指向函数或 const char* 的指针,然后将值转换为所需的对象,但我认为这是无用的。
假设我有一个 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
}
考虑到指针及其类型,实现此目的的正确方法是什么。据我所知,我不能简单地更改函数参数的值,我需要使用一些第三个变量,该变量应设置为 value
或 anotherFunction
.[=18 的结果=]
我现在在静态分析器中收到以下错误: [ID:danglingTemporaryLifetime] 使用临时指针。
这是什么意思,我该如何克服它?
不,您可以完全按照您的方式分配给函数参数。这不会以任何方式影响调用者。
使用 MyFunction(void *value, bool trigger)
保存指向函数或 const char* 的指针,然后将值转换为所需的对象,但我认为这是无用的。