第9章 c编译预处理命令.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章 c编译预处理命令

第9章 C语言预处理命令 9.1 宏定义 在C语言源程序中允许用一个标识符来表示一个字符串,称为“宏”。被定义为“宏”的标识符称为“宏名”。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。 宏定义是由源程序中的宏定义命令完成的。宏代换是由预处理程序自动完成的。 9.1.1 不带参数宏定义 一般形式: #define 宏名 [宏体] 功能:用指定标识符(宏名)代替字符序列(宏体) 9.1.2 带参数宏定义 C语言允许宏带有参数。在宏定义中的参数称为形式参数,在宏展开中的参数称为实际参数。 对带参数的宏,在代换过程中,不仅要宏展开,而且要用实参去代换形参。 一般形式: #define 宏名(参数表) 宏体 带参的宏与函数区别 9.2 文件包含 功能:一个源文件可将另一个源文件的内容全部包含进来。 一般形式: #include “文件名” 或 #include 文件名 被包含文件内容 源文件(*.c) 头文件(*.h) 9.3 条件编译 (1) #ifdef ~ #endif 一般格式: #ifdef 标识符 程序段1; [#else 程序段2;] #endif (2) #ifndef ~ #endif 一般格式: #ifndef 标识符 程序段1; [#else 程序段2;] #endif (3) #if ~ #endif 一般格式: #if 常量表达式 程序段1; [#else 程序段2;] #endif 习题 1. 设有以下定义 int? ?a=0;? double??b=1.25; char c=’A’; #define? ?d? ?2 则下面语句中错误的是【 】 A)a++??;??B)b+1;??C)c++??;??D)d++?; 2. 有以下程序 ? ?? ?#define??f(x)? ?x*x ?void main( ) ?{??int i; ? ?? ? ?? i=f(4+4)/f(2+2); ? ?? ?? printf(“%d\n”,i); } ??执行后输出结果是【 】 A)28? ?B)22? ?C)16? ?D)4 3. 以下程序中, for循环体执行的次数是【 】  #define N 2  #define M N+1  #define K M+1*M/2  void main()  { int i;  for(i=1;iK;i++)  { ... }  ...  } A)2? ?B)3? ?C)4 ?D)5 4. 以下叙述中正确的是【 】 A)预处理命令行必须位于源文件的开头 B)在源文件的一行上可以有多条预处理 命令 C)宏名必须用大写字母表示 D)宏替换不占用程序的运行时间 5. 有以下程序  # define f(x) (x*x)  void main()  { int i1, i2;  i1=f(8)/f(4) ; i2=f(4+4)/f(2+2) ;  printf(%d, %d\n,i1,i2);  } 程序运行后的输出结果是【 】  A)64, 28 B)4, 4 C)4, 3 D)64, 64 6. 以下程序运行后的输出结果是【 】 #define S(x) 4*x*x+1 void main() { int i=6,j=8;  printf(%d\n,S(i+j)); } 7. 以下叙述中正确的是【 】 A)预处理命令行必须位于C源程序的起始位置 B)在C语言中,预处理命令行都以“#”开头 C)每个C程序必须在开头包含预处理命令行:#includestdio.h D)C语言的预处理不能实现宏定义和条件编译的功能 8. 若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是【 】 A)#define N 10 B)#define n 5 int a[

文档评论(0)

me54545 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档