IAR没声明函数的后果
比有一个函数 void func1(void) 和 void func2(uint32).
当省略掉 #include 头文件,或者没加函数声明时,调用会有什么后果呢?
当是C文件时,编译是不会出错的,甚至运行也基本没错,但有一些不正常的地方:
void func1(void) 这种没有参数输入的情况下,不声明函数运行都是正常的,没有一点问题,
但是 void func2(uint32) 就会出错了,比出调用 func2(0),但是,当你单步进去时,会发现,传进去的数据不是0,而是65536, 这是因为由于没有声明,编译器把声明默认成了void func2(int) .
解决的方法也很简单:
1.加函数声明。
2.调用时加类型强制转化,写成func2((uint32)0) 的形式,此方法是通过IAR代码验证的。