发现ADS与Keil对C的编译有点不同,按照以前的习惯是把函数声明放在XX.h里,定义放在XX.c里,
刚刚用C写了个arm的串口打印字符串的程序,原型是 void RS232WriteStr(unsigned char *Pstr);
开始时忘记声明函数了,在另外一个文件里这样调用这个函数 RS232WriteStr("OK"); 编译时竟然只是警告,运行没有问题,后来发现问题,把声明写进来,竟然是错误,无法通过编译。 implicit cast of pointer to non-equal pointer
请问这是什么道理呢? |