c语言编译预处理是什么意思,级C语言编译预处理

《级C语言编译预处理》由会员分享,可在线阅读,更多相关《级C语言编译预处理(20页珍藏版)》请在人人文库网上搜索。

1、张居克,2010.11.21,编译预处理,电子邮件:编译预处理,1。宏定义和调用(不带参数的宏,带参数的宏)。2.“文件包含”处理。1.宏观定义。1.不带参数的宏定义的一般形式:#定义以“#”开头的标识符字符串都是预处理命令。“定义”是宏定义命令的“标识符”,而定义的宏名称“字符串”可以是常量、表达式、格式字符串等。例如:#定义PI 3.1415926,预处理命令,程序示例:#定义PI 3.14主(int)r;scanf(“r :% d”),预处理命令,不带参数的宏定义的一般规则:宏名称通常用大写字母表示,而不是经常出现在程序中的常量。宏定义使用宏名而不是字符串,当宏被展开时,它们使用该字符串。

2、而不是宏名。预处理程序不会检查它。如果有任何错误,它们只能在编译由宏扩展的源程序时找到。预处理命令和宏定义不是描述或语句,所以不需要在行尾添加额外的标记。如果添加了分号,用分号替换的定义必须写在函数之外,并且它们的范围是结束源程序的宏定义命令。如果您想终止它的作用域,可以使用# undef命令。如果宏名在源程序中用引号括起来,预处理器不会用宏替换它。预处理命令和宏定义可以嵌套。在宏定义字符串中,定义的宏名称可以用宏定义来表示数据类型,这使得编写更加方便。但是,有必要对“输出格式”进行不同于typedef的宏定义,这样可以减少编写麻烦,但是不建议使用预处理命令。2.带参数的宏定义的一般形式:#定。

3、义宏名(参数表)字符串带参数的宏调用的一般形式是:宏名(参数表);例如:#定义M(y)y * y 3 * y k=M(5);相当于k=5 * 5 3 * 5预处理命令,带参数的宏定义的一般规则:宏名和形式参数表之间不能有空格,形式参数不分配内存单元,所以没有必要定义类型。宏调用中的参数有特定的值。要使用它们来替换形式参数,有必要进行类型描述。宏定义中的形式参数是标识符,而宏调用中的实际参数可以是表达式和预处理命令。在宏定义中,字符串中的形式参数通常用括号括起来以避免错误。其次,如果一个文件包含一个源文件,它可以包含另一个源文件的所有内容。常规形式:#包含文件名或#包含常规库文件。用户定义文件,。

4、预处理命令,3。条件编译1。第一种形式:#ifdef标识符部分1 #else部分2 #endif,预处理命令,函数:如果标识符已经由#define命令定义,则编译部分1;否则,编译程序第2节。如果没有程序段2(它是空的),这种格式的#else可以写成:#ifdef标识符程序段#endif,预处理命令,程序示例:main()# if ndef pi printf(“pi未定义n”);#endif,预处理命令,2。第二种形式:#ifndef标识符段1 #否则段2 #endif,预处理命令,函数:如果标识符不是由#define命令定义的,则编译段1,否则编译段2。与第一种形式的功能相反,预处理命令。。

5、第三种形式:#如果常量表达式程序段1 #否则程序段2 #endif,预处理命令,函数:如果常量表达式的值为真(不为零),编译程序段1,否则编译程序段2。因此,程序可以在不同的条件下完成不同的功能和预处理命令。例如,#定义pi 3.14 main()# if ndef pi printf(“pi未定义”);#否则打印(“PI定义为”,PI);# endif printf( n );预处理命令,摘要,1。预处理函数是一种特定于语言的函数,它是由预处理程序在源程序正式编译之前完成的。程序员使用预处理命令在程序中调用这些函数。2.宏定义是用一个标识符来表示一个字符串,它可以是常量、变量或表达式。宏名称将在宏调用中被该字符串替换。3.宏定义可以有参数,在宏调用中,形式参数将被实际参数代替。而不是“价值转移”。为了避免宏替换中的错误,宏定义中的字符串应该用括号括起来,字符串中出现的形式参数的两边也应该用括号括起来。5.文件包含是预处理的一个重要功能,它可以用来将多个源文件连接成一个源文件进行编译,生成一个目标文件。6.条件编译只允许编译源程序中满足条件的程序段,使生成的目标程序更短。从而减少了内存开销,提高了程序的效率。7.使用预处理功能便于程序的修改、读取、移植和调试,也便于实现模块化程序设计。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值