几道面试题(和嵌入式有关)解决方案
几道面试题(和嵌入式有关)C/C++ code//没有去网上搜有没有类似的题目1.请问下面程序的输出,如果是在可移植
几道面试题(和嵌入式有关)
C/C++ code//没有去网上搜有没有类似的题目
1.请问下面程序的输出,如果是在可移植的嵌入式系统中,下面有什么风险?为什么?
C/C++ codeint main(int argc ,int *argv[]){ int a = 9, b = 0; a = a++ % 5 ; b = a; printf(" b = %d",b); return 0;}
2.在嵌入式系统中,为了使C标准支持中断,C编译器开发商通常加上类似 _interupt 关键字来支持中断服务程序,请评价下面的中断程序。
C/C++ code_interupt double compute_are( float r){ double area = PI * r * r; printf("area = %f",area); return area;}
3.优先级反转问题在嵌入式系统比较普遍,述说什么使优先级反转,对比继承策略和天花板策略。
[解决办法]SF
[解决办法]网上有很多类型的吧 特别是第2题经常考的 呵呵
1.很明显printf(" b = %d",b) 有重入和性能上的问题
2.double很影响中断的效率;
中断不能有返回值的和参数传递的,这个也明显的;
[解决办法]可移值?a = a++ % 5 ;
可能每个编绎器都不同吧,我不记得++ %它们的优先级了。想明确的话就加上括号吧。a = (a++) % 5 ; 或者a = (a % 5)++ ;
double compute_are( float ) 考虑下精度问题吧,没研究过这个精度问题。
没搞过qian入式。。。。不知道什么是继承策略和天花板策略。
[解决办法]1.a = a++ % 5 ;建议换用++a,保证原子操作,保证更好的重入性.
2.同意2楼,
[解决办法]mark
[解决办法]帮顶, 为什么问题1有重入性问题, 谁能详细说说
[解决办法]mark
[解决办法]2题同意2楼的,不过还有
C/C++ codedouble area = PI * r * r;
[解决办法]
优先级反转问题建议到网上百度一下
[解决办法]
命令行参数为什么是int argc, int *argv[],而不是int argc, char *argv[];
不同的编译器int和char长度不一样吧?
[解决办法]
中断函数是不能有返回值和参数传递的.
[解决办法]
第一个程序没看出有什么问题啊,不过好像很多嵌入式系统都没有屏幕可以打印的。
[解决办法]
大家可以加C++技术交流群:11787186
有问题可以把代码贴出来,大家相互交流,共同进步啊。
认为自己实力可以的,可以申请为管理员!
[解决办法]
mark mark