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代码验证的。

你可能感兴趣的:(STM32)