将局部变量从 FuncA 操作到 FuncB 时出现问题,并且 return 不是预期的
Problem manipulating local variable from FuncA to FuncB and return is not expected
我在 funcB
中创建了一个函数来更新 funcA
中的局部变量。但是,当 funcB
returns 时, funcA
中的局部变量值似乎与我在 funcB
.
中设置的值不对应
参见下面的代码片段:
typedef enum {
A =0,
B,
C,
D,
MAX
} status_val;
int funcA(){
status_val test = A;
printf("before getvalue %d\n",test); //<-- this prints 0
funcB((char*)&test);
printf("value of test=%d\n", test); //PROBLEM: this prints a very large number. ex. 67108864 in my actual project
}
void funcB(char* val){
*val = 10;
printf("val inside getvalue=%d\n", *val); //<-- this prints 10
}
输出(预期):
before getvalue 0
val inside getvalue=10
value of test=10
输出(实际):
before getvalue 0
val inside getvalue=10
value of test=67108864
但是在我的嵌入式系统中的实际代码运行中,funcA
中funcB
return之后的值似乎变成了一个非常大的数字(67108864) .我现在很困惑:(。这似乎是一个堆栈问题。如果是的话,任何人都可以指出一些可能的方法来解决这个问题吗?TIA。
funcB
期待 char *
,但您传递的是 status_val *
。枚举类型通常实现为 int
类型,因此您使用的是不兼容的指针类型。
更改 funcB
以接受正确的类型:
void funcB(status_val *val){
我在 funcB
中创建了一个函数来更新 funcA
中的局部变量。但是,当 funcB
returns 时, funcA
中的局部变量值似乎与我在 funcB
.
参见下面的代码片段:
typedef enum {
A =0,
B,
C,
D,
MAX
} status_val;
int funcA(){
status_val test = A;
printf("before getvalue %d\n",test); //<-- this prints 0
funcB((char*)&test);
printf("value of test=%d\n", test); //PROBLEM: this prints a very large number. ex. 67108864 in my actual project
}
void funcB(char* val){
*val = 10;
printf("val inside getvalue=%d\n", *val); //<-- this prints 10
}
输出(预期):
before getvalue 0
val inside getvalue=10
value of test=10
输出(实际):
before getvalue 0
val inside getvalue=10
value of test=67108864
但是在我的嵌入式系统中的实际代码运行中,funcA
中funcB
return之后的值似乎变成了一个非常大的数字(67108864) .我现在很困惑:(。这似乎是一个堆栈问题。如果是的话,任何人都可以指出一些可能的方法来解决这个问题吗?TIA。
funcB
期待 char *
,但您传递的是 status_val *
。枚举类型通常实现为 int
类型,因此您使用的是不兼容的指针类型。
更改 funcB
以接受正确的类型:
void funcB(status_val *val){