《电子技术应用》
您所在的位置:首页 > 可编程逻辑 > 业界动态 > DSP编程技巧之:控制与语言选项以及预处理与诊断

DSP编程技巧之:控制与语言选项以及预处理与诊断

2015-09-18
关键词: DSP 编程技巧

  在前面几期中,我们了解到DSP编程技巧之:编译流程与处理器选项、DSP编程技巧之:程序优化、DSP编程技巧之:调试与路径选项,今天为大家讲解控制与语言选项以及预处理与诊断。
  编译器有一些控制选项,这些选项是供我们来控制编译器的,不像前几篇文章提到的那些选项那样,是编译器用来控制编译结果的。下面我们就来看看我们可以使用的控制编译器的选项有哪些:
  就编译器本身来说,它只要读取C、C++、汇编等文件进行处理就完成任务了,所以编译器的控制选项并不多,一般情况下一个-z选项就足够我们完成从编译程序到生成目标的编译器控制效果了。相比较而言,C、C++这些语言本身就复杂的多了,并且因为有很多个版本的存在,难免有一些小混乱的存在,所以编译器里与编程语言本身相关的选项就显得特别多,以便我们来对语言的特性等进行正确使用,下面就看看编译器里与编程语言有关的选项:
  从表2里也可以看出,大部分特性是与C++编程息息相关的,如果仅仅使用C进行一些编程的话,对编译器的编程语言选项的使用确实要简单了不少。

  在编程软件例如CCS中编程时,代码分析工具可以方便我们对代码进行分析,例如我们把鼠标指向一个函数名的时候,所指的地方就能出来一个实时菜单,使得我们可以直接定位到函数的声明、被调用的位置或者某个宏定义等等,非常方便。这种功能是如何实现的呢?在编译器的前端是一个语义解析器,它负责把源程序中的token找出来,然后解析器parser(也有的地方叫分析器)就可以解析这些token,并产生树状表,供编程环境使用;此外解析器还可以完成一部分的语法错误检查功能。如果希望了解关于解析器的更详细的信息,可以参考编译原理方面最著名的“龙书”,即《Compliers: Principles, Techniques, &Tools》;在K&RC语言文档的A12这一节中也对解析器的预处理功能进行了详细的叙述,它预处理的信息主要包括:
  1. 宏定义和扩展,例如_INLINE;
  2. #include引用的文件,包括<>和“”两种方法引用的头文件;
  3. 条件编译指令,例如#if,#endif等等;
  4. 其它的多种预处理指令,主要是#开头的一些指令,例如#error。
  我们可以控制编译器的预处理选项,使得解析器根据我们的需求产生需要的预处理结果,方便我们对程序的开发调试;这些选项如表1所示。
  因为预处理器要使用到文件中的符号信息,所以相关的预定义信息一定要提供给预处理器,否则找不到符号信息就要报错了。符号选项比较简单,就是预定义与解除定义,如表2所示。

  在程序的处理过程中,我们可以控制编译器输出诊断信息选项,使得它输出我们期望的详细信息,更加容易定位和解决一些看起来难以捉摸的问题;这些选项如表3所示。需要注意的是,诊断信息相关的选项必须放在链接器选项--run_linker之前。

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。