以下函数使用了指针,但有时忘记输入*指针符号,却没有告警,编译也能通过,请问为什么会这样。
void a(void)
{
static unsigned char test;
....
b(&test);
}
void b(unsigned char *arr)
{
if(arr==1) //arr前忘记加指针符*,当a函数的test这个变量为1时不能进入循环,说明指针没有传递进来
{
...
*arr=0;
}
}
整个工程都没有定义arr这个变量,编译器有时不告警,有时会告警,而且还编译通过了,只是运行时指针不会传递进来,如果这样用指针真是太危险了,因为很有可能忘记加这个*,而出了问题很难查找原因,请问是不是MDK哪里有设置可以检查这种语法错误 |