《嵌入式培训--c基础强化训练》由会员分享,可在线阅读,更多相关《嵌入式培训--c基础强化训练(120页珍藏版)》请在金锄头文库上搜索。
1、1,华清远见嵌入式学院 LINUX C编程秘籍,V 3.0,2,一 Linux C编程前奏 GNU编译器 gcc,预处理:gcc hello.c -E -o hello.i 调用预处理器cpp,完成诸如宏展开、处理条件编译、删除注释等工作。一般生成.i文件。 编译:gcc hello.c -S -o hello.s 调用编译器cc1,把源程序翻译成对应于目标系统的汇编文件.s。 汇编:gcc hello.c -c -o hello.o 调用汇编器as,将汇编指令翻译成机器指令,生成可重定位目标文件。 链接:gcc hello.c -o hello 调用链接器ld,将生成的可重定位文件与相关库文
2、件链接,生成可执行目标文件。,3,二、典型C程序实例概览,4,二 典型C程序实例概览 一个简单的Linux C程序实例分析,LINUX C编程风格 1、适当的空行和空格,空行一般可以出现在逻辑块之间。 2、一定要有缩进,代码块中的代码一定要缩进,无论是函数体、循环体、switch多路分支和普通复合语句。(注意,C语言是一种“自由体”语言,程序中的所有空白符都与逻辑无关,只起排版作用,因此空行缩进等格式对语法来说不是必须的) 3、适当的注释,程序具有一定逻辑和算法复杂度的时候,在关键的地方做好注释。写注释是一种修养。(注意,注释要写代码的功能,而不是其原理) 4、LINUX C风格中的函数名和变
3、量名一般用小写字母加下划线,比如变量apple_tree,而不是像在其他平台中会用到诸如AppleTtree这样的变量名或者函数名。(当然常量通常用大写字母表示) 5、最好按照规范写代码,代码不仅自己将来要看,而且经常是要给别人看的,不要自成一体。,5,二 典型C程序实例概览 一个简单的Linux C程序实例分析,#include 包含另一个文件 该行告诉编译器包含文件stdio.h中的全部信息。文件stdio.h是所有C语言编译包的一个标准部分。这这个文件对关键字输入和显示输出提供支持。 /* 一个简单的Linux C程序 */ 注释 符号/*和*/中包含有助于使程序更清晰的注释性内容,她们
4、只是为了帮助读者理解,在编译时将被编译器忽略。 函数体的开始 这个开始花括号标志着组成函数的语句的开始。而结束花括号()则标志着函数的结束。所有的代码块都必须用花括号括起来! int num; 声明语句 这个语句表明您将使用num这个变量,并且它是int(整数)类型的。 num = 1; 赋值语句 该语句表明把值1赋给num这个变量。,6,二 典型C程序实例概览 一个简单的Linux C程序实例分析,char *pstring = “hello world”; 定义字符指针变量 在定义变量的同时,我们可以对其进行赋初值,这样的赋值叫做初始化。对于静态存储的变量,初始化必须用常量而不能用变量。
5、for(num=0; num、等 逻辑运算符:比如&、|等 位运算符:比如&、|等 其他运算符:比如sizeof、=等,20,五 运算符,表达式和语句 运算符,赋值运算符 在C里,“=”不表示“相等”,而是一个赋值运算符,例如: bmw = 2010; /正确的赋值语句 符号“=”的左边是一个变量名,右边是赋给该变量的值。符号“=”被称为赋值运算符(assingment operator)。再强调一次:不要把上面的语句解释成“bmw等于2010”,而要解释成“把值2010赋给变量bmw”。赋值运算的执行顺序是从右到左的。 像下面的语句: 2010 = bmw; /错误的赋值语句 从数学角度上看
6、也许没什么奇怪,但C不允许这样的语法,原因是2010是一个常量,我们是不能对一个常量进行赋值。,21,五 运算符,表达式和语句 运算符,1) 算术运算符,22,五 运算符,表达式和语句 运算符,2) 关系运算符,23,五 运算符,表达式和语句 运算符,3) 逻辑运算符,24,五 运算符,表达式和语句 运算符,4) 位运算符,25,六、控制流,26,六 控制流,一、循环控制 while语句 do-while语句 for语句 二、分支和跳转控制 if语句 switch语句 goto语句,27,六 控制流 while循环,while循环:先判断再执行 一般形式: while(expression) statement 例如: while(i 0); 判断表达式是否为真,是则返回循环体,否则退出,30,六 控制流 dowhile循环,dowhile循环被称为“退出条件循环”,即在每次执行循环之前先检查判断条件,这样循环中的语句就至少必须被执行一次。跟while循环一样,该形式的statement部分可以是一个简单语句,或者一个符合语句。 在expression变为真(非零)之前要重复这个执行和判断的循环。,