1.warning:
#550-D: variable 'd' was set but never used
描述:变量'd'定义但从未使用,或者是,虽然这个变量你使用了,但编译器认为变量d所在的语句没有意义,编译器把它优化了.
解决:仔细衡量所定义的变量d是否有用,若是认定变量d所在语句有意义,那么尝试用volatile关键字修饰变量d,若是真的没有用,那么删除掉以释放可能的内存.
2.warning:
#1-D: last line of file ends without a newline
描述:文件最后一行不是新的一行.编译器要求程序文件的最后一行必须是空行,想了半天没想通为什么要这样.
解决:可以不理会.若是觉得出现警告不爽,那么在出现警告的文件的最后一行敲个回车,空出一行.
3. warning:
#111-D: statement is unreachable
描述:声明不可能到达.多出现在这种场合:
int main(void)
{
...
while(1)
//无限循环,这在不使用操作系统的程序中最常见
{
line 10: warning: function declared implicitly
这是由于没有声明函数原型造成的。
在a.c中,
void main()
.....
delay();
在b.c中
void delay()
如果就只是这样的话,就会出现上面的worning的。
解决办法是在b.h中写 extern void delay();然后在a.c中include "b.h"就ok了。
再看程序,发现只包含了DSP281x_Device.h,后来把DSP281x_Examples.h添加进去就消除worning了。
DSP281x_Examples.h中又include“DSP281x_GlobalPrototypes.h”,而这个头文件中声明了全部的外部函数
1.warning: #550-D: variable 'd' was set but never used描述:变量'd'定义但从未使用,或者是,虽然这个变量你使用了,但编译器认为变量d所在的语句没有意义,编译器把它优化了.解决:仔细衡量所定义的变量d是否有用,若是认定变量d所在语句有意义,那么尝试用volatile关键字修饰变量d,若是真的没有用,那么删除掉以释放可能的内存.2.
最新版本
MDK
没有预装ARM Compiler version5;而且使用ARM Compiler version6
编译器
出错的问题../CMSIS/CM3/core_cm3.c(445): error: non-ASM statement in naked
function
is not supported
uint32_t result=0;
Keil
今天编译出现了如下图所示问题:
警告
一模一样,总共43个,最后找了大半天原因,问题出在**“Option——C/C++——Preprocessor Symbols——Define”**设置有问题。
我用的是STM32F407ZGT6核心板,
修改方法:
Define中,改为**“STM32F40_41xxx,USE_STDPERIPH_DRIVER”千万注意,40_41xxx后边是个英语输入法下的逗号**,
改正以后
警告
消失,编译结果如下(忽略那个
错误
,我还没找到
错误
原因):
1、
function
"fabs" declared implicitly 说明调用fabs的这个文件中没有对fabs这个函数进行声明,因此在头文件中包含该函数的声明即可。即在头文件中添加#
include
"math.h"即可。
2、关于
编译器
优化
容易产生的不可思议的BUG,因此
编译器
不要轻易
优化
,除非对
编译器
的工作原理很熟悉。现在说一下自己遇到的问题,一个简单的函数就是不正确执行,函数如下: