- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 带参数的宏定义 #define 宏名(参数表)使用参数的字符或字符串 # include stdio.h # define VOLUMN(a,b,c) a*b*c # define V1(a,b) a*b # define V2(a,b) (a)*(b) # define V3 (a,b) (a)*(b) void main(void) { b = VOLUMN(1,2,3) ; c = V1(1+2,2+1); d = V2(1+2,2+1); e = V3(1+2,2+1); } 在宏调用预编译处理时,依次用实参替代宏定义中的形参,并将替代后的字符串替代宏调用 在宏定义中要用括号把形参扩起来,以减少错误 b=6 c=6 d=9 宏定义时,宏名与左括号之间不能有空格。如果有空格,则将空格后的全部字符都作为无参宏所定义的字符序列,而不作为形参 * #define MAX(x,y) (x)(y)?(x):(y) ……. main() { int a,b,c,d,t; ……. t=MAX(a+b,c+d); …… } 宏展开:t=(a+b)(c+d)?(a+b):(c+d); int max(int x,int y) { return(xy?x:y); } main() { int a,b,c,d,t; ……. t=max(a+b,c+d); ……… } 例 用宏定义和函数实现同样的功能 * 带参的宏与函数区别 带参宏 函数 处理过程 不分配内存 简单的字符置换 分配内存 先求实参值,再代入形参 处理时间 编译前 程序运行时 参数类型 无类型问题 定义实参,形参类型 程序长度 变长 不变 运行速度 不占运行时间 调用和返回占时间 文件包含 功能:一个源文件可将另一个源文件的内容全部包含进来 一般形式: #include “文件名” 或 #include 文件名 #include “file2.c” file1.c file2.c file1.c B A B A 处理过程:预编译时,用被包含文件的内容取代该预处理命令,再对“包含”后的文件作一个源文件编译 直接按标准目录搜索 “” 先在当前目录搜索,再搜索标准目录 可指定路径 被包含文件内容 源文件(*.c) 头文件(*.h) 宏定义 数据结构定义 函数说明等 文件包含可嵌套 #include “file2.c” file1.c A file3.c C #include “file3.c” file2.c B file1.c A C B 也可以在file1中用两个include命令分别包含file2和file3: #include file3.h #include file2.h file3应出现在 file2之前 文件包含举例 //f1.c #include stdio.h #include f2.c int i=200; int j=400; void main() { printf(%d %d \n,i,j); f1(); } //f2.c #include stdio.h void f1() { printf(fffffff ); } 说明:f1.c 和f2.c不要放在一个工程中间 内部函数和外部函数 内部函数 只能被本文件中其它函数所调用,定义形式:static 类型标识符 函数名(形参表) 外部函数(缺省状态) 可以为其它文件调用,定义形式:extern 类型标识符 函数名(形参表)extern缺省时隐含为外部函数 在一个文件中要调用在另一个程序文件中定义的外部函数前,必须对被调用的函数作原型说明,并在函数作原型说明前面加上extern 外部变量 (1)在函数外面定义的变量,既可称为全局变量,也可称为外部变量 (2)一个文件中定义的外部变量,如果其前不加static,则该外部变量也可以被其他文件引用 (3)多个文件必须在一个工程中 //g.c #include stdio.h int a; extern int power(int);//外部函数声明 void main() { int b=3,c,d,m; scanf(%d%d,a,m); c=a*b; d=power(m); printf(%d %d %d %d\n,a,b,c,d); } //e.c extern a; //外部变量声明 int power(int n) { int i,y=1; for(i=1;i=n;i++) y*=a; r
文档评论(0)