在毕设中遇到的值得一记的小问题
来源:互联网 发布:第一台女程序员 编辑:程序博客网 时间:2024/06/06 21:25
最近两个月在做“基于ucos的导航接收机的研究”,其中要用到恩智浦的LPC3250芯片,基于ARM9内核。所用的编译器是IAR7.10。一下是我在做毕业设计当中遇到的一些小问题,但是不找到又很困扰。这些小问题都能在编译器手册、芯片手册、C语言书籍中找到。声明一下,本人还只是一个菜鸟,见笑了。
1、#pragma system _include
告诉编译器,如果“system”已经build,那么就把和它相关的某些内容包含在内。这个#pragma 指令很重要,在嵌入式C中,很好的使用它会让代码更紧凑高效。但我还是一个菜鸟,还不会灵活使用。
2、typedef struct
{
unsigned char no0:1;
┆
unsigned char no7:1;
}
这段代码实现位段的功能,位段的成员是一个或多个位的字段,这些不同的字段实际上是存储在一个或多个整型变量中。位段可以根据不同的类型声明为8位的(unsigned char)、16位的(unsigned short int)、32位的(unsigned int)、64位的(unsigned long int)。在这个项目中,使用位段定义寄存器,再结合union实现对寄存器的每一位的访问。
3、@关键字
这是编译器的操作符,在IAR手册的327页。作用:alternatively the #pragma location directive, can be used for placing global and static variables at absolute addresses。翻译过来的意思是:也可以使用#pragma location,将全局或者静态变量放在一个内存中的绝对地址中。具体的可以查阅手册。
4、RSEG
RSEG section [:type][:flag][(align)]
IAR汇编器的指令,在IAR汇编手册中的P67,P75页。
SECTION的作用与此类似。
5、PUBLIC
汇编器的指令,export full 32-bit values,export symbol to other modules.
6、DEFINE
汇编器指令,Use DEFINE to define symbols that should be known to the module containing the
directive . After the DEFINE directive, the symbol is known。意思是:使用define指令定义必须被包含这条指令的模块识别的变量,define指令后,这个表示服就是已知的了。
7、IMPORT EXTERN
汇编器指令。两者的作用相同,import an extern symbol.
8、?XXX和_XXX
前者表示仅能由汇编访问的外部标号
后者表示可由C语言访问的标号
9、module
编译器指令,声明模块,能够被linker包含,参与链接,在一个文件中仅能有一个module。
10、##和#
在宏定义中##表示把位于它两边的符号连接成一个符号。它允许宏定义从分离的文本片段创建标识符。
#使宏定义中的变量被预处理器当做字符串使用。#argument被当成argument。
11、匿名的union和struct中成员的引用。
匿名本是C++支持,而C不支持,但是IAR将此特性拓展到C中,但在编译C程序时,要加上“-e”选项,而此选项是编译器默认的。
匿名的union和struct的成员是可以直接访问的,不需要经过union或struct名,并且本来就没有名字。
12、#ifdef __cplusplus
extern “c”{}
#endif
C++环境才会定义__cplusplus,告诉编译器下面是C语言函数(因为C++和C语言函数的编译转换不一样,主要是C++中存在重载)
暂时只有这些,但是会慢慢增加慢慢积累。在一开始,我觉得这些只是小问题,不足一记,但是就是这些小问题让我在编写代码经常出错、在阅读他人的代码时经常止步不前。菜鸟就是菜鸟啊,没有能力还不认真学,这是牢记了。
- 在毕设中遇到的值得一记的小问题
- 我在开发中遇到的小问题系列(一)
- 工作遇到的小问题系列(一)
- 每日一记-Git使用中遇到的小问题
- 遇到的小问题
- 遇到的小问题
- 遇到的小问题
- 遇到的小问题
- 遇到的小问题
- 值得一记的开发css小技巧
- python 的django中遇到的小问题(一)
- VS2008 MFC C++ 遇到的一些小问题总结一
- JavaWeb项目遇到的一些小问题(一)
- javaee-mysql-jdbc中遇到的小问题一
- 学习过程中遇到的小问题(一)
- 在开发过程中界面上遇到的小问题
- 在毕设过程中遇到的几个小问题
- MFC 在编程当中遇到的小问题
- NSScanner类的基本用法
- 关于Python切片
- linux下面tomcat域名配置
- Redis学习
- 黑马程序员---java设计模式
- 在毕设中遇到的值得一记的小问题
- hdu3415 Max Sum of Max-K-sub-sequence
- Android实现数据存储技术
- ubuntu14.04 安装eric4+pyqt4
- kepware 发生 Setup was unable to initialize your PC错误解决办法
- Android 开源交流分享汇总
- 蓝的成长记——追逐DBA(16):DBA也喝酒,被捭阖了
- 疯狂Java学习笔记(36)-----------Set集合
- hdu 1622 Trees on the level