摘要: C中的volatile用法volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。)。 例如: volatile int i=10; int j = i; ... int k = i; volatile 告诉编译器i是随时可能发生变化的,每次使用它的时候必须从i的地址中读取,因而编译器生成的可执行码会重新从i的地址读取数据放在k中。 而优化做法是,由于编译器发现两次从i读数据的代码 阅读全文
posted @ 2012-09-10 12:13 smart900613 阅读(104) 评论(0) 推荐(0) 编辑
摘要: typedef 函数指针的用法在网上搜索函数指针,看到一个例子。开始没看懂,想放弃,可是转念一想,这个用法迟早要弄懂的,现在多花点时间看懂它,好过以后碰到了要再花一倍时间来弄懂它。其实很多时候都是这样,如果每次到难一点的内容,总想着下次我再来解决它,那就永远也学不到东西。后面那个例子加了注释,是我对这种用法的理解,希望对新手有所帮助。进入正文: 代码简化, 促进跨平台开发的目的. typedef 行为有点像 #define 宏,用其实际类型替代同义字。 不同点:typedef 在编译时被解释,因此让编译器来应付超越预处理器能力的文本替换。用法一:typedef int (*MYFUN)(int 阅读全文
posted @ 2012-09-10 12:12 smart900613 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 要把映像文件加载到SDRAM中,除了要正确设置好映像文件的RO段基地址外(对于一个加载时域和运行时域相同的映像文件来说,RO段基地址实际上就是该 映像文件在存储空间的起始地址),更关键的是要对SDRAM进行初始化。因为在上电时,SDRAM是没有被初始化的,所谓初始化SDRAM,就是要设置处 理器的SDRAM空间以及读写SDRAM的时序参数,因而SDRAM在初始化之前是不能进行读写操作的。启动AXD时自 动初始化SDRAM:将初始化SDRAM的命令序列保存为一个2440init.txt文本文件(代码如下),然后在AXD的主窗口下选择菜单 Options->Configure Interfa 阅读全文
posted @ 2012-03-19 21:28 smart900613 阅读(2092) 评论(0) 推荐(0) 编辑
摘要: 出现问题undefined reference to 'pthread_create'undefined reference to 'pthread_join'修改在编译时:加上 -lpthreadgcc -o thread thread.c -lpthread 阅读全文
posted @ 2012-03-08 21:16 smart900613 阅读(204) 评论(0) 推荐(0) 编辑
摘要: #tar xvzf arm-linux-gcc-4.3.2.tgz -C /#gedit /root/.bashrc在最后一行 export PATH=$PATH:/usr/local/arm/4.3.2/bin看清楚你的路径重新登录linux系统后,使用arm-linux-gcc –v,显示没有该命令存在, 阅读全文
posted @ 2012-02-23 11:56 smart900613 阅读(213) 评论(0) 推荐(0) 编辑