嵌入式C语言面试必备的问答

Barr group上面的一个嵌入式C语言QUIZ,有些triky~

Q:定义一年有多少秒的宏定义

A:#define SECOND_PER_YEAR (365 * 24 * 24 * 24UL)

Q:定义两值取小的宏定义

A:#define MIN(x,y) ((x) < (y) ? (x))

Q:无限循环的定义方式

A:while(1) for(;;) loop: goto loop;

Q:int (*a)[10]的作用

A:定义10个整形指针的数组(x)A:指向一个整形数组的指针

Q:static 的用法

A:函数内的变量是常驻内存,不可重入;定义文件内的函数;定义文件那的变量

Q:int * const x

A:a pointer to a const int(x)A:a const pointer to an intBTW: const int x : pointer to a const int const int const x : const pointer to a const int

Q:variable 的用法

A:访问外设寄存器;中断函数用到的全局变量;多任务或多线程用到的变量;

Q:复位最后一个bit

A:x &= ~0x1;

Q:哪一个编译器支持把变量定义为volatile const

A:ALL ANSIBTW: 这里可以用于外部存储器的固定数据定义,比如Data Flash

Q:直接地址写入数据

A(Uint16 const)(0xaaaa) = 0x1234;