标签:
Warning[Pe550]: variable "xxxx" was set but never used
如:
void fx (void)
{
}
定义局部变量,就会报“变量定义了,但是没有使用”的警告!,并且变量也没有被赋值。很容易迷惑人。不仔细看警告的朋友可能半天调试不好。
UINT8
void fx (void)
{
}
把变量改为全局变量后,就不会有警告了。
或者在定义的前面加上
UINT8
void fx (void)
{
volatile
}
我就是因为在中断里对串口接收进行处理,结果没法接收。
具体原因是不是因为这个变量引起的还在查找。
不知道为什么会这样。
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()
{
}
如果把该变量如下面程序中那样定义为局部变量,则会出现如下的提示:
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()
{
}
同样的在把函数作为表达式调用时,所用的变量也要定义为全局变量,如下面程序中的变量k调用函数int GetMax(int x,int y),如果把它定义为局部变量也会出现上面所说的提示,且程序不能正常运行。
//函数作为表达式调用
int GetMax(int x,int y);
int k;
int main( void )
{
}
int GetMax(int x,int y)
{
}
我试验了IAR Embedded Workbench的V7.4和V7.1两种版本,结果都是这样。
IAR variable "l" was set but never used 错误分析
标签:
原文地址:http://blog.csdn.net/broadce/article/details/45563413