Chinaunix首页 | 论坛 | 博客
  • 博客访问: 261052
  • 博文数量: 81
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 961
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-31 21:31
文章存档

2009年(15)

2008年(66)

我的朋友

分类: C/C++

2008-03-04 14:48:28

一.
#define SECONDS_PER_YEAR  (60*60*24*365)UL
#define MIN(A,B) ((A)<=(B)?(A):(B))
二.
while(1)
{
}
for(;;)
{
}
loop:
.....
goto loop;
三.
int a;  an integer
int *a;  A pointer to an integer
int **a;  A pointer to a pointer to an integer
int a[10];
int *a[10];
int (*a)[10];
int (*a)(int);
int (*a[10])(int);
四.
const int a;
int const a;
const int *a;
int * const a;
int const * a const;
五.
volatile

一个参数既可以是const还可以是volatile  如只读状

态寄存器

一个指针可以是volatile  如当一个中断服务子程序修

改一个指向buffer的指针时

int square(volatile int *ptr)
{
return *ptr * *ptr;
}
由于*ptr指向一个volatile型参数,可能返回不是你所

期望的平方值
六.
#define BIT3 (0x1<<3)
static int a;
void set_bit3(void)
{
a|=BIT3;
}
void clear_bit3(void)
{
a&=~BIT3;
}
七.
要求设置一绝对地址为0x67a9的整型变量的值为0xaa66
为了访问一绝对地址把一个整型数强制转换为一指针是

合法的
int *ptr;
ptr=(int *)0x67a9;
*ptr=0xaa55;
八.
ISR不能返回一个值
ISR不能传递参数
ISR中做浮点运算是不明智的
九.
void foo(void)
{
unsigned int a=6;
int b=-20;
(a+b>6)?puts(">6") : puts("<=6");
}

输出>6  当表达式中存在有符号类型和无符号类型时所

有的操作数都是自动转换为无符号类型的
十.
unsigned int zero=0;
unsigned int compzero=0xffff;  //compzero of

zero
对于一个int型不是16位的处理器(如ARM的int型是32位

的)
应编写如下:
unsigned int compzero = ~0;
十一.
#define dPS struct s*
typedef struct s*  tPS;  这种类型定义更好

dPS p1,p2
tPS p1,p2;








阅读(1053) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:编程

给主人留下些什么吧!~~