- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于嵌入式程序开发一些基本问题
int main(int argc,char *argv[])//argc是外部命令参数的个数,第一个是本程序,argv[]指向字符串的指针数组,存放的是各参数的内容,第一个为本程序具体路径
预处理器(Preprocessor)
1、用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)???????? #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL2、写一个标准宏MIN ,这个宏输入两个参数并返回较小的一个。??????? #define MIN(A,B) ((A) = (B) ? (A) : (B)) 3、我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事???????? least = MIN(*p++, b);//满递减压栈,*b++先引用再增值4、预处理器标识#error的目的是什么?
5、 用变量a给出下面的定义a) 一个整型数b)一个指向整型数的指针c)一个指向指针的的指针,它指向的指针是指向一个整型数d)一个有10个整型数的数组e)一个有10个指针的数组,该指针是指向一个整型数的。 f)一个指向有10个整型数数组的指针g)一个指向函数的指针,该函数有一个整型参数并返回一个整型数h)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数
答案是: a) int a; b) int *a; c) int **a; d) int a[10]; e) int *a[10]; f) int (*a)[10]; g) int (*a)(int); h) int (*a[10])(int);
Static
6、关键字static的作用是什么?这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。2)在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。3)在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。
大多数应试者能正确回答第一部分,一部分能正确回答第二部分,同是很少的人能懂得第三部分。这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码范围的好处和重要性。
Const
7、关键字const有什么含意?只读就可以了。const int a;int const a;const int *a;int * const a;int const * a const;
/******/前两个的作用是一样,a是一个常整型数。第三个意味着a是一个指向常整型数的指针。第四个意思a是一个指向整型数的常指针。最后一个意味着a是一个指向常整型数的常指针为什么还要如此看重关键字const呢?如下的几下理由:1)关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感谢这点多余的信息。2)通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。3)合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。
8、关键字volatile有什么含意?并给出三个不同的例子。一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:1)并行设备的硬件寄存器(如:状态寄存器)2)一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)3)多线程应用中被几个任务共享的变量
回答不出这个问题的人是不会被雇佣的。我认为这是区分C程序员和嵌入式系统程序员的最基本的问题。搞嵌入式的家伙们经常同硬件、中断、RTOS等等打交道,所有这些都要求用到volatile变量。不懂得volatile的内容将会带来灾难。假设被面试者正确地回答了这是问题(嗯,怀疑是否会是这样),我将稍微深究一下,看一下这家伙是不是直正懂得volatile完全的重要性。1)一个参数既可以是const还可以是volatile吗?解释为什么。2)一个指针可以是volatile 吗?解释为什么。3)下面的函数有什么错误:
文档评论(0)