- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C 预处理器
C 预处理器
C 预处理器
C 预处理器不是编译器的组成部分,但是它是编译过程中⼀个单独的步骤。简⾔之,
C 预处理器只不过是⼀个⽂ 替换⼯具⽽已,它们会指⽰编译器在实际编译之前完成
所需的预处理。我们将把 C 预处理器 (C Preprocessor )简写为 CPP 。
所有的预处理器命令都是以井号 (# )开头。它必须是第⼀个⾮空字符,为了增强可
读性,预处理器指令应从第⼀列开始。下⾯列出了所有重要的预处理器指令:
指令 描述
#define 定义宏
#include 包含⼀个源代码⽂件
#undef 取消已定义的宏
#ifdef 如果宏已经定义,则返回真
#ifndef 如果宏没有定义,则返回真
#if 如果给定条件为真,则编译下⾯代码
#else #if 的替代⽅案
#elif 如果前⾯的 #if 给定条件不为真,当前条件为真,则编译下⾯代码
#endif 结束⼀个 #if ……#else 条件编译块
#error 当遇到标准错误时,输出错误消息
#pragma 使⽤标准化⽅法,向编译器发布特殊的命令到编译器中
预处理器实例
分析下⾯的实例来理解不同的指令。
#define MAX_ARRAY_LENGTH 20
这个指令告诉 CPP 把所有的 MAX_ARRAY_LENGT 替换为 20 。使⽤ #define 定义常
量来增强可读性。
#include stdio.h
#include myheader.h
这些指令告诉 CPP 从系统库中获取 stdio .h ,并添加⽂ 到当前的源⽂件中。下⼀⾏告
诉 CPP 从 地⽬录中获取 myheader.h ,并添加内容到当前的源⽂件中。
#undef FILE_SIZE
#define FILE_SIZE 42
这个指令告诉 CPP 取消已定义的 FILE_SIZE ,并定义它为 42 。
#ifndef MESSAGE
#define MESSAGE You wish!
#endif
这个指令告诉 CPP 只有当 MESSAGE 未定义时,才定义 MESSAGE 。
#ifdef DEBUG
/* Your debugging statements here */
#endif
这个指令告诉 CPP 如果定义了 DEBUG ,则执⾏处理语句。在编译时,如果您向 gcc
编译器传递了 -DDEBUG 开关量,这个指令就⾮常有⽤。它定义了 DEBUG ,您可以
在编译期间随时开启或关闭调试。
预定义宏
ANSI C 定义了许多宏。在编程中您可以使⽤这些宏,但是不同直接修改这些预定义
的宏。
宏 描述
__DATE__ 当前⽇期,⼀个以 MMM DD YYYY 格式表⽰的字符常量。
__TIME__ 当前时间,⼀个以 :MM:SS 格式表⽰的字符常量。
__FILE__ 这会包含当前⽂件名,⼀个字符串常量。
__LINE__ 这会包含当前⾏号,⼀个⼗进制常量。
__STDC__ 当编译器以 ANSI 标准编译时,则定义为 1。
让我们来尝试下⾯的实例:
#include stdio.h
main()
{
printf( File :%s\n , __FILE__ );
printf( Date :%s\n , __DATE__ );
printf( Time :%s\n , __TIME__ );
printf( Line :%d\n , __LINE__ );
printf( ANSI :%d\n , __STDC__ );
}
当上⾯的代码 (在⽂件 test.c 中)被编译和执⾏时,它会产⽣下列结果:
File :test.c
Date :Jun 2 2012
Time :03:36:24
Line :8
ANSI :1
预处理器运算符
C 预处理器提供了下列的运算符来帮助您创建宏:
宏延续运算符 (\ )
⼀个宏通常写
文档评论(0)