解答:
#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
知识点:
#define语法的基本知识(例如不能以分号结束,括号的使用等等);
明确这个表达式会造成一个8位机或16位机的整型数溢出,因此要用到长整型符号L或UL,告诉编译器这个常数是长整型数;
2、写一个"标准"宏MIN,这个宏输入两个参数并返回较小的一个?
#define MIN(A,B) ( (A) <= (B) ? (A) : (B) )
知识点:
#define宏定义应用的基本知识;
三重条件操作符的知识,这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码;
懂得在宏中小心地把参数用括号括起来;
3、用变量a给出如下定义:
定义一个指向指针的指针,它指向的指针是指向一个整形数?
定义一个有10个指针的数组,指针是指向整形数?
定义一个指向有10个整形数数组的指针?
定义一个指向函数的指针,该函数有一个整型参数并返回一个整形数?
定义一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数?
int **a;
int *a[10];
int (*a)[10]
int (*a_function)(int b);
int (*a[10])(int);
4、在C语言中,关键字static的作用?
在函数体内部使用static声明一个变量,此静态变量只能在该函数内部使用,但函数退出时该变量不被销毁,依旧占用内存;
在模块内但函数体外使用static声明一个变量,该变量可以被模块内所有函数访问但不能被模块外其它函数访问,它是一个本地的全局变量;
在模块内使用static声明一个函数,该函数可被该模块内的其它函数调用,但不能被其它模块的函数调用;
5、关键字volatile有什么含义?并举例使用场景?
解答:
一个定义为volatile的变量意味着该变量可能随时会被意想不到的改变,处理器在使用这个变量时必须每次都小心地重新读取这个变量的值,
而不是使用保存在寄存器里的备份;
例如,定义一个表示硬件寄存器数值的变量(如状态寄存器);
定义一个在中断服务程序中会被访问到的变量;
6、修改内存地址为0x00006666的整型变量的值为66?
int *ptr = (int *)0x00006666;
*ptr = 66;
7、嵌入式系统总是要用户对变量或寄存器进行位操作,现给定一个整型变量a,
请实现2个函数分别用于设置该变量的bit 3和清除该变量的bit 3,在以上两个操作中要保持其它位不变?
#define BIT3 (0X1 << 3)
static int a;
void set_bit3(void){a |= BIT3;}
void clear_bit3(void){a &= ~BIT3;}
本文源自微信公众号:嵌入式软件实战,不代表用户或本站观点,如有侵权,请联系nick.zong@aspencore.com 删除!