预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共11页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第一部分嵌入式c语言(25分) 预处理器(Preprocessor) 1.用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问 题) #defineSECONDS_PER_YEAR(60*60*24*365)UL UL(表示无符号长整型), 4.嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢? while(1) 数据声明(Datadeclarations) 5.用变量a给出下面的定义 a)一个整型数(Aninteger) b)一个指向整型数的指针(Apointertoaninteger) c)一个指向指针的的指针,它指向的指针是指向一个整型数(Apointertoa pointertoanintege)r d)一个有10个整型数的数组(Anarrayof10integers) e)一个有10个指针的数组,该指针是指向一个整型数的。(Anarrayof10 pointerstointegers) f)一个指向有10个整型数数组的指针(Apointertoanarrayof10integers) g)一个指向函数的指针,该函数有一个整型参数并返回一个整型数(Apointerto afunctionthattakesanintegerasanargumentandreturnsaninteger) h)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并 返回一个整型数(Anarrayoftenpointerstofunctionsthattakeaninteger argumentandreturnaninteger) 答案是: a)inta;//Aninteger b)int*a;//Apointertoaninteger c)int**a;//Apointertoapointertoaninteger d)inta[10];//Anarrayof10integers e)int*a[10];//Anarrayof10pointerstointegers f)int(*a)[10];//Apointertoanarrayof10integers g)int(*a)(int);//Apointertoafunctionathattakesanintegerargumentand returnsaninteger h)int(*a[10])(int);//Anarrayof10pointerstofunctionsthattakeaninteger argumentandreturnaninteger Static 7,关键字const有什么含意? const意味着"只读"就可以了不要理解为是个常数 下面的声明都是什么意思? constinta; intconsta; constint*a; int*consta; intconst*aconst; /******/ 前两个的作用是一样,a是一个常整型数。第三个意味着a是一个指向常 整型数的指针(也就是,整型数是不可修改的,但指针可以)。第四个意思a是 一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针 是不可修改的)。最后一个意味着a是一个指向常整型数的常指针(也就是说, 指针指向的整型数是不可修改的,同时指针也是不可修改的)。 1)关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声 明一个参数为常量是为了告诉了用户这个参数的应用目的。 2)通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代 码。 3)合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参 数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。 9.嵌入式系统总是要用户对变量或寄存器进行位操作。给定一个整型变量a, 写两段代码,第一个设置a的bit3,第二个清除a的bit3。在以上两个操作中, 要保持其它位不变。 用#defines和bitmasks操作。这是一■个有极高可移植性的方法,是应该 被用到的方法。最佳的解决方案如下: #defineBIT3(0x1«3) staticinta; voidset_bit3(void) { a|=BIT3; ) voidclear_bit3(void) ( a&=~BIT3; 访问固定的内存位置(Accessingfixedmemorylocations) 10.嵌入式系统经常具有要求程序 员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址为 0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写代 码去完成这一任务为了访问一绝对地址把一个整 型数强制转换(typecast)为一指针是合法的。 in