IAR variable "l" was set but never used 错误分析

variable "l" was set but never used

Warning[Pe550]: variable "xxxx" was set but never used

如:

void fx (void)

{

UINT8 i;

i = p;

........................

}

定义局部变量,就会报“变量定义了,但是没有使用”的警告!,并且变量也没有被赋值。很容易迷惑人。不仔细看警告的朋友可能半天调试不好。

UINT8 i;

void fx (void)

{

i = p;

........................

}

把变量改为全局变量后,就不会有警告了。

或者在定义的前面加上 volatile
后,编译就通过了。这个和编译器的库有关。

UINT8 i;

void fx (void)

{

volatile UINT8
i;

i = p;

........................

}

我就是因为在中断里对串口接收进行处理,结果没法接收。

具体原因是不是因为这个变量引起的还在查找。

不知道为什么会这样。

IAR公司提供的开发调试环境Embedded Workbench支持MSP430单片机的C语言或汇编语言程序调试,并且能够进行软硬件仿真,是开发MSP430单片机应用的有力武器,但是在使用中也发现一些问题。

在IAR Embedded Workbench中函数或宏调用中的变量,需要把它定义为全局变量,例如下面程序中调用宏S(r)的float area浮点变量,要定义为全局变量程序才能正常运行。

#include "io430.h"

//带参数的宏定义

#define PI 3.14

#define S(r) PI*(r)*(r)

float area; //全局变量

void main()

{

int r;

r=3;

area = S(r);//调用宏

}

如果把该变量如下面程序中那样定义为局部变量,则会出现如下的提示:

Warning[Pe550]: variable "area" was set but never used F:\MSP430程序\test\main.c 10

同时程序也不能正常运行。

#include "io430.h"

//带参数的宏定义

#define PI 3.14

#define S(r) PI*(r)*(r)

void main()

{

int r;

float area; //局部变量

r=3;

area = S(r); //调用宏

}

同样的在把函数作为表达式调用时,所用的变量也要定义为全局变量,如下面程序中的变量k调用函数int GetMax(int x,int y),如果把它定义为局部变量也会出现上面所说的提示,且程序不能正常运行。

//函数作为表达式调用

int GetMax(int x,int y);

int k;

int main( void )

{

// Stop watchdog timer to prevent time out reset

WDTCTL = WDTPW + WDTHOLD;

int m,n;

m=9;

n=10;

k = GetMax(m,n); //调用函数

}

int GetMax(int x,int y)

{

if(x>=y) return x;

else return y;

}

我试验了IAR Embedded Workbench的V7.4和V7.1两种版本,结果都是这样。

时间: 2024-08-26 17:24:59

IAR variable "l" was set but never used 错误分析的相关文章

全局变量报错:UnboundLocalError: local variable 'l' referenced before assignment

总结: 内部函数,不修改全局变量可以访问全局变量 内部函数,修改同名全局变量,则python会认为它是一个局部变量 在内部函数修改同名全局变量之前调用变量名称(如print sum),则引发Unbound-LocalError 在程序中设置的sum属于全局变量,而在函数中没有sum的定义,根据python访问局部变量和全局变量的规则:当搜索一个变量的时候,python先从局部作用域开始搜索,如果在局部作用域没有找到那个变量,那样python就在全局变量中找这个变量,如果找不到抛出异常(NAMEE

(转)A Beginner's Guide To Understanding Convolutional Neural Networks

Adit Deshpande CS Undergrad at UCLA ('19) Blog About A Beginner's Guide To Understanding Convolutional Neural Networks Introduction Convolutional neural networks. Sounds like a weird combination of biology and math with a little CS sprinkled in, but

编译原理课设参考

期末到了,忙课设好久了,在编译原理的课设上面走了好多的弯路,也好久没有碰前端的东西了,心感惭愧,那我就把我最近忙的一些东西贡献出来,希望可以帮助到那些感觉这门科目很难的同学,祝大家可以学好每一门学科~ 下面是我们学校的学习要求,我全部已经完成,时间仓促,大家仅供参考.转载请注明出处. 基本内容(成绩范围:“中”.“及格”或“不及格”) (1)扩充赋值运算:+=,-=, *= 和 /= (2)扩充语句(Pascal的FOR语句): FOR <变量>:=<表达式>STEP<表达式

JAVA并发编程2_线程安全&amp;内存模型

"你永远都不知道一个线程何时在运行!" 在上一篇博客JAVA并发编程1_多线程的实现方式中后面看到多线程中程序运行结果往往不确定,和我们预期结果不一致.这就是线程的不安全.线程的安全性是非常复杂的,没有任何同步的情况下,多线程的执行顺序是不可预测的.当多个线程访问同一个资源时就会出现线程安全问题.例如有一个银行账户,一个线程往里面打钱,一个线程取钱,要是得到不确定的结果那是多么可怕的事情. 引入: 例如下面的程序,在单线程下,执行两次i++理论上i的最终值是12,但是在多线程环境下则不

深入分析C++引用

Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4 关于引用和指针的差别的文章非常多非常多,可是总是找不到他们的根本差别,偶然在codeproject上看到这篇文章,认为讲的挺好的, 所以翻译了下,希望对大家有帮助. 原文地址: http://www.codeproject.com/KB/cpp/References_in_c__.aspx 引言 我选择写 C++ 中的引用是由于我感

PLSQL Coding Standard

Naming and Coding Standards for SQL and PL/SQL "The nice thing about standards is that you have so many to choose from." - Andrew S Tanenbaum Introduction This document is mentioned in a discussion on the OTN forums. One of the first comments be

PL/0与Pascal-S编译器程序详细注释

学校编译课的作业之一,要求阅读两个较为简单的编译器的代码并做注释, 个人感觉是一次挺有意义的锻炼, 将自己的心得分享出来与一同在进步的同学们分享. 今后有时间再做进一步的更新和总结,其中可能有不少错误,也请各位大佬不吝指正. 代码可以通过使用Lazarus等pascal环境执行. 源码仓库:https://github.com/luxiaodou/PL-0-and-Pascal-S-complier-trans PL0编译器源码 PL0语言是Pascal的一个子集,编译器也比较简单,逐行注释 p

使用神经网络来识别手写数字【译(三)- 用Python代码实现

实现我们分类数字的网络 好,让我们使用随机梯度下降和 MNIST训练数据来写一个程序来学习怎样失败手写数字. 我们也难怪Python (2.7) 来实现.只有 74 行代码!我们需要的第一个东西是 MNIST数据.如果有 github 账号,你可以将这些代码库克隆下来, git clone https://github.com/mnielsen/neural-networks-and-deep-learning.git 或者你可以到这里 下载. Incidentally, 当我先前说到 MNIS

【神经网络和深度学习】笔记 - 第二章 反向传播算法

上一章中我们遗留了一个问题,就是在神经网络的学习过程中,在更新参数的时候,如何去计算损失函数关于参数的梯度.这一章,我们将会学到一种快速的计算梯度的算法:反向传播算法. 这一章相较于后面的章节涉及到的数学知识比较多,如果阅读上有点吃力的话也可以完全跳过这一章,把反向传播当成一个计算梯度的黑盒即可,但是学习这些数学知识可以帮助我们更深入的理解神经网络. 反向传播算法的核心目的是对于神经网络中的任何weight或bias计算损失函数$C$关于它们的偏导数$\frac{\partial C}{\par