汇顶电子 嵌入式工程师 社招面经

  • 嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。
  • 中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展—让标准C支持中断。具代表事实是,产生了一个新的关键字__interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。
  • __interrupt double compute_area (double radius)
  • {
  • double area = PI * radius * radius;
  • printf(" Area = %f", area);
  • return area;
  • }

  • 尽管不像非嵌入式计算机那么常见,嵌入式系统还是有从堆(heap)中动态分配内存的过程的。那么嵌入式系统中,动态分配内存可能发生的问题是什么?
  • Typedef在C语言中频繁用以声明一个已经存在的数据类型的同义字。也可以用预处理器做类似的事。例如,思考一下下面的例子:
  • #define dPS struct s *
  • typedef struct s * tPS;
  • 以上两种情况的意图都是要定义dPS和tPS作为一个指向结构s指针。哪种方法更好呢?(如果有的话)为什么?
  • C语言同意一些令人震惊的结构,下面的结构是合法的吗,如果是它做些什么?
  • Int a = 5, b = 7, c;
  • c = a+++b;
  • 关键字static的作用是什么?
  • 关键字const是什么含意?
  • 下面的代码输出是什么,为什么?
  • Void foo(void)
  • {
  • unsigned int a = 6;
  • int b = -20;
  • (a+b > 6) puts("> 6") : puts("<= 6");
  • }
  • 评价下面的代码片断:
  • unsigned int zero = 0;
  • unsigned int compzero = 0xFFFF;
  • /*1's complement of zero */
#汇顶科技##社招##嵌入式工程师##面经#
全部评论

相关推荐

1 12 评论
分享
牛客网
牛客企业服务