C++预处理命令详解.docVIP

  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文档。上传文档
查看更多
C++预处理命令详解.doc

预处理命令 #,## # 和 ## 操作符是和#define宏使用的. 使用# 使在#后的首个参数返回为一个带引号的字符串. 例如, 命令 #define to_string( s ) # s 将会使编译器把以下命令 cout to_string( Hello World! ) endl; 理解为 cout Hello World! endl; 使用##连结##前后的内容. 例如, 命令 #define concatenate( x, y ) x ## y ... int xy = 10; ... 将会使编译器把 cout concatenate( x, y ) endl; 解释为 cout xy endl; 理所当然,将会在标准输出处显示10. #define 语法: #define macro-name replacement-string #define命令用于把指定的字符串替换文件中的宏名称 . 也就是说, #define使编译器把文件中每一个macro-name替换为replacement-string. 替换的字符串结束于行末. 这里是一个经典的#define应用 (至少是在C中): #define TRUE 1 #define FALSE 0 ... int done = 0; while( done != TRUE ) { ... } #define命令的另外一个功能就是替换参数,使它 假冒创建函数一样使用. 如下的代码: #define absolute_value( x ) ( ((x) 0) ? -(x) : (x) ) ... int x = -1; while( absolute_value( x ) ) { ... } 当使用复杂的宏时,最好使用额外的圆括号. 注意在以上的例子中, 变量x总是出现在它自己的括号中. 这样, 它就可以在和0比较,或变成负值(乘以-1)前计算值. 同样的, 整个宏也被括号围绕, 以防止和其它代码混淆. 如果你不注意的话, 你可能会被编译器曲解你的代码. #error 语法: #error message #error命令可以简单的使编译器在发生错误时停止. 当遇到一个#error时,编译器会自动输出行号而无论message的内容. 本命令大多是用于调试. #if, #ifdef, #ifndef, #else, #elif, #endif 这些命令让编译器进行简单的逻辑控制. 当一个文件被编译时, 你可以使用这些命令使某些行保留或者是去处. #if expression 如果表达式(expression)的值是真(true),那么紧随该命令的代码将会被编译. #ifdef macro 如果macro已经在一个#define声明中定义了, 那么紧随该命令的代码将会被编译. #ifndef macro 如果macro未在一个#define声明中定义, 那么紧随命令的代码将会被编译. 一些小边注: 命令#elif是elseif的一种缩写,并且他可以想你所意愿的一样工作. 你也可以在一个#if后插入一个defined或者!defined以获得更多的功能. 这里是一部分例子: #ifdef DEBUG cout This is the test version, i= i endl; #else cout This is the production version! endl; #endif 你应该注意到第二个例子比在你的代码中插入多个cout进行调试的方法更简单. #include 语法: #include filename #include filename 本命令包含一个文件并在当前位置插入. 两种语法的主要不同之处是在于,如果filename括在尖括号中,那么编译器不知道如何搜索它. 如果它括在引号中, 那么编译器可以简单的搜索到文件. 两种搜索的方式是由编译器决定的,一般尖括号意味着在标准库目录中搜索, 引号就表示在当前目录中搜索. The spiffy new 整洁的新C++ #include目录不需要直接映射到filenames, 至少对于标准库是这样. 这就是你有时能够成功编译以下命令的原因 #include iostream #line 语法: #line line_number fil

文档评论(0)

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

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

1亿VIP精品文档

相关文档