自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 keril中不能定义全局变量时初始化的原因

<br />在嵌入式系统中,全局变量的初始化是在系统启动的过程中来做的。做法其实很简单,就是把外存(ROM或Flash等存放CODE的介质)中的全局变量空间拷贝到内存中的全局变量空间映像中。如果没有这一步正确的从外存到内存的拷贝工作,你的全局变量是没有初始化值的。<br /><br />编译器如果没有生成这步代码,那你的全局变量就都是没有办法初始化的。<br /><br />用const为啥能解决问题呢?因为const型的变量被Keil直接放到了外存中,也就是放到了代码段中。以后使用const实际不是访问内

2011-04-27 20:20:00 1157

转载 一个通用Makefile的编写

我们在Linux环境下开发程序,少不了要自己编写Makefile,一个稍微大一些的工程下面都会包含很多.c的源文件。如果我们用gcc去一个一个编译每一个源文件的话,效率会低很多,但是如果我们可以写一个Makefile,那么只需要执行一个make就OK了,这样大大提高了开发效率。但是Makefile的语法规则众多,而且缺乏参考资料,对于初学者来说,写起来还是有一定的难度,往往令很多人望而生畏。下面我们介绍一个比较通用而且简洁的Makefile,大家只要对它稍作修改就可以用在你们自己的工程里了。

2010-07-20 15:31:00 344

转载 makefile教程

第一章、概述<br />什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional(专业)的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。<br />因为,makefile

2010-07-19 16:58:00 374

转载 makefile教程

第一章、概述<br />什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional(专业)的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。<br />因为,makefile

2010-07-19 16:56:00 405

原创 写自己的第一个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 310

原创 第一个LINUX多线程程序

<br />我对什么是线程的概念目前还并不是很清楚,只是按照书上的实例先学写一个多线程程序,让自己有一个线程编程的意思:<br /> <br />//////////////////////////////////////////////////////source code/////////////////////////////////////////////////<br />#include <pthread.h><br />#include <stdlib.h><br />#include

2010-07-15 15:48:00 287

原创 用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 1360

原创 用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 1257

转载 Linux学习笔记之二(VMware下Linux网络配置攻略)

<br />        刚使用虚拟机时,就被它神奇的虚拟功能所着迷,因为一直想在电脑里装Linux,可是由于它与Windows的不兼容,怕一安装就把原来的系统破坏。但是在虚拟机里真的能很好地运行,觉得很不错。可是Linux强大的网络功能如果没有学会,那恐怕不能说真正地学习Linux。所以我就找了很多资料,可是那些资料讲得都不全,毕竟自己亲自尝试才是最好的学习方法。<br />  现在我们就来进行Linux的网络配置吧。这里是使用windows xp作为host,redflag linux5.0桌面版

2010-07-03 12:13:00 400

原创 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 282

转载 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 330

转载 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 285

转载 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 295

转载 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 250

转载 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 316

转载 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 440

转载 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 256

转载 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 336

转载 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 572

转载 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 293

原创 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 483

转载 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 3287 1

原创 枚举类型和指针的长度

1.枚举类型和int型应该一样,指针肯定是和平台位数一样 2.指针的存储内容是内存地址,他的大小当然等于地址总线的宽度。 32位机是32位。即4字节。 16位即是16位。既2字节。 依次类推。

2010-06-27 16:48:00 846

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除