原创 第一次使用IAR workbench

2009-9-17 23:09 2959 2 2 分类: MCU/ 嵌入式

刚刚写了很多,结果没设置好,写的全没了,郁闷啊。再重复的写点。


今天第一次用IAR workbench 来写程序,以前都是看,没有真正实践,写了后发现编译器之前的差别还是蛮大的。


第一个程序:


void main(void)
{
  int a="1",b=2,c;
  c = a+b;
}


这是一个很简单的小程序,可是在IAR里compile时,却出现警告


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


c变量被定义了,但没有被调用,去网上查了下,发现这是msp430编译器的特别之处,它把之定义没被用到的变量优化了。后来把它改了一下,就好了。


改后的程序


void main(void)
{
  int a="1",b=2,c;
  c = a+b;
  c = c<<1;
}


第二个程序


#include <string.h>
void main(void)
{
  char TAB[] = {"hello,world!"};
  char  TAB1[] = {1,2,3,4,0,5,6,7};
  int n1=0,m1=0,n2=0,m2=0;
  n1 = strlen (TAB);
  m1 = sizeof  TAB;
  n2 = strlen(TAB1);
  m2 = sizeof(TAB1);
  n1 = n1<<1;
  m1 = m1<<1;
  n2 = n2<<1;
  m2 = m2<<1;
  while(1);
}


这个程序主要是看看sizeof和strlen的区别,它们的区别主要有以下几点:


1、sizeof是运算符,而strlen是函数。


2、sizeof后面如果是类型则必须加括号,如果是变量名可以不加括号;而strlen就必须加括号。


3、sizeof可以用类型作为参数;而strlen必须用char *作参数,而且必须以''\0''结尾。


4、sizeof返回的是数组的大小;而strlen返回的是字符串的长度(即''\0''之前的字符串的长度,不包括''\0'')。


所以上面程序的结果是


n1=24;m1=26;n2=8;m2=16;


这是我自己写的小程序,加深了对sizeof和strlen的理解。


 

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
2
关闭 站长推荐上一条 /3 下一条