比如
int f1(int *x);
int main()
{
signed char a = 0, b = 0;
f1(&a);
}
int f1(int *x)
{
*x = 0xaabb;
}
b 被改写为0xaa, 显然不是符合原来的意图。
比如
int f1(int *x);
int main()
{
signed char a = 0, b = 0;
f1(&a);
}
int f1(int *x)
{
*x = 0xaabb;
}
b 被改写为0xaa, 显然不是符合原来的意图。
gcc不知道你的真实意图,你的真实意图需要自己去实现.
gcc怎么知道你的调用不是下面的方式?
int f1(int *x);
int main()
{
signed char a[2], b = 0;
int ab;
f1(a);
f1(&ab);
}
int f1(int *x)
{
*x = 0xaabb;
return 0;
}