预处理、头文件、位操作.ppt

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
预处理、头文件、位操作

预处理、头文件、位操作;第九章 预处理命令;使用宏定义时,要注意: 一般用大写字母表示“宏名”,以示与变量的 区别。 一般宏定义写在程序的开头,有效范围至文件 结束。 使用宏定义可以提高程序的移植性。;例1 输出杨辉三角形的前 5 行。 main() { int a[5][5], i, j; for(i=0; i5; i++) { a[i][i]=1; a[i][0]=1;} for(i=2; i5; i++) for(j=1; ji; j++) a[i][j]=a[i-1][j]+a[i-1][j-1]; for(i=0; i5; i++) { for(j=0; j=i; j++) printf(“%5d”,a[i][j]); printf(“\n”); } } ;2. 带参数的宏定义的一般形式为: #define 宏名(参数表) 字符串 如: #define S(a,b) a*b area=S(5,2); 宏替换时,a用5替换,b用2替换。 S(5,2)被替换为:5*2;例2 求面积值。 #define PI 3.1415926 #define S(r) PI*r*r main() { float a, area; a=3.2; area=S(a); printf(“area=%f\n”, area); } ;9.2“文件包含”的处理;注意: 两种形式的差别是: #include math.h 只按照系统规定的标准方式寻找要包含的文件。 #include “math.h” 首先在当前目录下寻找要包含的文件,若找不到, 再按照标准方式寻找要包含的文件。 ; 2 “文件包含”处理 所谓“文件包含”处理是指一个源文件可以将另外一个源文件的全部内容包含进来,即将另外的文件包含到本文件之中。C语言提供了#include命令用来实现“文件包含”的操作。其一般形式为 #include “文件名” 或 #include 文件名 ;;在编译中,将“包含”以后的文件,如file1.C(图2(C)所示)作为一个源文件单位进行编译。 “文件包含”命令是很有用的,它可以节省程序设计人员的重复劳动。例如,某一单位的人员往往使用一组固定的符号常量(如G=9.81,pi=3.1415926,e=2.718,C=……),可以把这些宏定义命令组成一个文件,然后各人都可以用#include命令将这些符号常量包含到自己所写的源文件中。这样每个人就可以不必重复定义这些符号常量。相当于工业上的标准零件,拿来就用。;注意: 在编译时并不是作为两个文件进行连接的,而是作为一个源程序编译,得到一个目标(.obj)文件。因此被包含的文件也应该是源文件而不应该是目标文件。 这种用在文件头部被包含的文件称为 “头文件”,常以“h”为后缀(h为head(头)的缩写)。当然不用“.h”为后缀,而用“C”为后缀或者没有后缀也是可以的,但用“h”作后缀更能表示此文件的性质。 如果需要修改一些常数,不必修改每个程序,只需修改一个文件(头部文件)即可。但是应当注意,被包含文件修改后,凡包含此文件的所有文件都要全部重新编译。;头文件除了可以包括函数原型和宏定义外,也可以包括结构体类型定义和全局变量定义等。 说明: (1) 一个include命令只能指定一个被包含文件,如果要包含n个文件,要用n个include命令。 (2) 如果文件1包含文件2,而文件2中要用到文件3的内容,则可在文件1中用两个include命令分别包含文件2和文件3,而且文件3应出现在文件2之前,即在file1.C中定义: #inClude  file3.h“ #inClude file2.h; (3) 在一个被包含文件中又可以包含另一个被包含文件,即文件包含是可以嵌套的。例如,上面的问题也可以这样处理,见图3。它的作用与图4所示相同。;; 准方式查找(即再按尖括号的方式查找)。一般说,如果为调用库函数而用#include命令来包含相关的头文件,则用尖括号,以节省查找时间。如果要包含的是用户自己编写的文件(这种文件一般都在当前目录中),一般用双引号。 (5) 被包含文件(file2.h)与其所在的文件(即用#include命令的源文件file1.C),在预编译后已成为同一个文件(而不是两个文件)。因此,如果file2.h中有全局静态变量,它也在file1.C文件中有效,不必用extern声明。 ;9.3 条件编译;条件编译命令有以

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档