- 博客(23)
- 收藏
- 关注
原创 keril中不能定义全局变量时初始化的原因
<br />在嵌入式系统中,全局变量的初始化是在系统启动的过程中来做的。做法其实很简单,就是把外存(ROM或Flash等存放CODE的介质)中的全局变量空间拷贝到内存中的全局变量空间映像中。如果没有这一步正确的从外存到内存的拷贝工作,你的全局变量是没有初始化值的。<br /><br />编译器如果没有生成这步代码,那你的全局变量就都是没有办法初始化的。<br /><br />用const为啥能解决问题呢?因为const型的变量被Keil直接放到了外存中,也就是放到了代码段中。以后使用const实际不是访问内
2011-04-27 20:20:00
1272
转载 一个通用Makefile的编写
我们在Linux环境下开发程序,少不了要自己编写Makefile,一个稍微大一些的工程下面都会包含很多.c的源文件。如果我们用gcc去一个一个编译每一个源文件的话,效率会低很多,但是如果我们可以写一个Makefile,那么只需要执行一个make就OK了,这样大大提高了开发效率。但是Makefile的语法规则众多,而且缺乏参考资料,对于初学者来说,写起来还是有一定的难度,往往令很多人望而生畏。下面我们介绍一个比较通用而且简洁的Makefile,大家只要对它稍作修改就可以用在你们自己的工程里了。
2010-07-20 15:31:00
381
转载 makefile教程
第一章、概述<br />什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional(专业)的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。<br />因为,makefile
2010-07-19 16:58:00
419
转载 makefile教程
第一章、概述<br />什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional(专业)的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。<br />因为,makefile
2010-07-19 16:56:00
446
原创 写自己的第一个makefile
<br />下面是我写的一个简单的makefile文件,学习了makefile的基本语法。<br />#makefile Example<br />OBJ=main.o delete_node.o selection_sort.o create_list.o concatenate.o<br /><br />test:$(OBJ)<br /> gcc -o test $(OBJ)<br /><br />main.o:main.c head.h<br /> gc
2010-07-15 19:44:00
341
原创 第一个LINUX多线程程序
<br />我对什么是线程的概念目前还并不是很清楚,只是按照书上的实例先学写一个多线程程序,让自己有一个线程编程的意思:<br /> <br />//////////////////////////////////////////////////////source code/////////////////////////////////////////////////<br />#include <pthread.h><br />#include <stdlib.h><br />#include
2010-07-15 15:48:00
317
原创 用GCC编译调试第一个C程序
<br />今天终于迈出了自己LINUX下写C的第一步,在VI下写的程序,在GCC下面编译链接的,VI的使用比较不方便,目前还不太习惯。<br />fei@fei-pc:~$ vi test.c <br />fei@fei-pc:~$ vi test.c <br />fei@fei-pc:~$ gcc -o test test.c <br />test.c:9: error: ‘N’ undeclared here (not in a function)<br />test.c: In fu
2010-07-14 20:00:00
1479
原创 用vi写自己的第一个shell脚本
#vi example.sh #.sh 是脚本后缀#!/bin/bash #用bash来解释脚本程序echo "The NO. of parapeters is: $#"; #学习系统变量$#--命令行参数的数目echo "The script name is: $0"; #学习系统变量$0----当前程序名echo "Th
2010-07-13 20:23:00
1328
转载 Linux学习笔记之二(VMware下Linux网络配置攻略)
<br /> 刚使用虚拟机时,就被它神奇的虚拟功能所着迷,因为一直想在电脑里装Linux,可是由于它与Windows的不兼容,怕一安装就把原来的系统破坏。但是在虚拟机里真的能很好地运行,觉得很不错。可是Linux强大的网络功能如果没有学会,那恐怕不能说真正地学习Linux。所以我就找了很多资料,可是那些资料讲得都不全,毕竟自己亲自尝试才是最好的学习方法。<br /> 现在我们就来进行Linux的网络配置吧。这里是使用windows xp作为host,redflag linux5.0桌面版
2010-07-03 12:13:00
438
原创 Linux学习笔记之一
今天的任务就是安装CD-ROM中的Linux Kernal Source包,实现步骤如下: 1. 挂载CD-ROM: mount /dev/cdrom /tmp cd /tmp 注释:Linux不会自动挂载CDROM,需要mount以后才能打开。 2.查找kernal source 的RPM包,版本RH enterprise 4的路径:Redhat/RPMs/kernal-devel-
2010-07-03 01:03:00
306
转载 C程序100实例之八
【程序71】题目:编写input()和output()函数输入,输出5个学生的数据记录。1.程序分析:2.程序源代码:#define N 5struct student{ char num[6]; char name[8]; int score[4];}stu[N];input(stu)struct student stu[];{ int i, j; for(i=0; i { printf("/n please input %d of %d/n", i+1,
2010-07-02 18:32:00
360
转载 C程序100实例之七
【程序61】题目:打印出杨辉三角形(要求打印出10行如下图)1.程序分析:11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 12.程序源代码:main(){ int i, j; int a[10][10]; printf("/n"); for(i=0; i { a[i][0] = 1; a[i][i] = 1; } for(i=2;i for(j=1;j a[i][j] = a[
2010-07-02 18:14:00
318
转载 C程序100实例之六
【程序41】题目:学习static定义静态变量的用法 1.程序分析:2.程序源代码:#include "stdio.h"varfunc(){ int var = 0; static int static_var = 0; printf("/40:var equal %d /n", var); printf("/40:static var equal %d /n", static_var); printf("/n"); var++; static_var++;}voi
2010-07-02 17:25:00
321
转载 C程序100实例之五
【程序41】题目:学习static定义静态变量的用法 1.程序分析:2.程序源代码:#include "stdio.h"varfunc(){ int var = 0; static int static_var = 0; printf("/40:var equal %d /n", var); printf("/40:static var equal %d /n", static_var); printf("/n"); var++; static_var++;}voi
2010-07-02 17:23:00
275
转载 C程序100实例之三
【程序21】题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。1.程序分析:采取逆向思维的方法,从后往前推断。2.程序源代码:main(){ int day, x1, x2; day = 9; x2 = 1; while(day>0) { x1 = (x2 + 1) * 2; /*
2010-07-02 17:21:00
347
转载 C程序100实例之四
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。2.程序源代码:void main(){ char letter; printf("please input the first letter of someday/n"); while((letter = getch()) != 'Y') /* 当所按字母为Y时才结束 */ { swi
2010-07-02 17:21:00
469
转载 C程序100实例之二
【程序11】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析: 兔子的规律为数列1, 1, 2, 3, 5, 8, 13, 21....2.程序源代码:main(){ long f1, f2; int i; f1 = f2 = 1; for(i = 1; i { printf("%12ld %12ld", f1, f2); if(i %
2010-07-02 17:20:00
292
转载 C程序100实例之一
【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。2.程序源代码:main(){ int i, j, k; printf("/n"); for(i=1; i for(j=1; j for(k=1; k { if(i != k && i !=j && j != k
2010-07-02 17:18:00
391
转载 16道嵌入式C面试题
> 预处理器(Preprocessor)1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。 3). 意识到这个
2010-07-02 17:07:00
605
转载 LINUX下进行C语言编程所需要的基础知识
在这篇文章当中,我们将会学到以下内容: 源程序编译 Makefile的编写 程序库的链接 程序的调试 头文件和系统求助 1.源程序的编译 在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器. 下面我们以一个实例来说明如何使用gcc编译器. 假设我们有下面一个非常简单的源程序(hello.c): int main(int argc,char **argv) { printf( " "Hello Linux " "); } 要
2010-06-28 23:41:00
318
原创 const char *p与char * const p区别
这里是const char *p;他的意思是p指向的目标空间的内容不可变化.例如定义char c='A'; p=&c;则c的内容不可以变化.如c='B';等一些企图改变变量c的值的做法都不行.然而p仍然是动态的,就是它还可以指向别的空间,被赋予新的地址值,只是被他指向的目标空间的内容不可变化,如上面的c值始终为'A',不可以更新,而一但p指向别处,则c就更新了.问题补充中的变化实质上是p的值的变化,这是允许的.因为字符串出现在表达式中时它的值是它的首字母的地址,所以"xxx"和"yyy"都是地址值.而若企图
2010-06-27 16:53:00
521
转载 text, data (initialized), bss, stack, heap几个段
根据APUE,程序分为下面的段:.text, data (initialized), bss, stack, heap。data/bss/text: text段在内存中被映射为只读,但.data和.bss是可写的。bss是 英文Block Started by Symbol的简称,通常是指用来存放程序中未初始化的全局变量的一块内存区域,在程序载入时由内核清0。BSS段属于静态内存分配。它的初始值也是由用 户自己定义的连接定位文件所确定,用户应该将它定义在可读写的RAM区内,源程序中使用malloc分配的内存
2010-06-27 16:52:00
3344
1
原创 枚举类型和指针的长度
1.枚举类型和int型应该一样,指针肯定是和平台位数一样 2.指针的存储内容是内存地址,他的大小当然等于地址总线的宽度。 32位机是32位。即4字节。 16位即是16位。既2字节。 依次类推。
2010-06-27 16:48:00
896
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人