网站大量收购独家精品文档,联系QQ:2885784924

c语言中的的作用.pdfVIP

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

c 语言中的#号的作用 宏中#和##的用法 一、一般用法 我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一 起. 用法: #i ncludecstdio #i ncludeclimits using namespace std; #define STR(s) #s #define CONS(a,b) int(a##e##b) int main() { printf(STR(vck)); // 输出字符串vck printf(%d\n, CONS(2,3)); // 2e3 输出:2000 return 0; } 二、当宏参数是另一个宏的时候 需要注意的是凡宏定义里有用#或##的地方宏参数是不会再展 开. 1, 非#和##的情况 #define TOW (2) #define MUL(a,b) (a*b) printf(%d*%d=%d\n, TOW, TOW, MUL(TOW,TOW)); 这行的宏会被展开为: printf(%d*%d=%d\n, (2), (2), ((2)*(2))); MUL 里的参数TOW 会被展开为(2). 2, 当有#或##的时候 #define A (2) #define STR(s) #s #define CONS(a,b) int(a##e##b) printf(int max: %s\n, STR(INT_MAX)); // INT_MAX #i ncludeclimits 这行会被展开为: printf(int max: %s\n, INT_MAX); printf(%s\n, CONS(A, A)); // compile error 这一行则是: printf(%s\n, int(AeA)); INT_MAX 和A 都不会再被展开, 然而解决这个问题的方法很简单. 加多一层中间转换宏. 加这层宏的用意是把所有宏的参数在这层里全部展开, 那么在转 换宏里的那一个宏(_STR)就能得到正确的宏参数. #define A (2) #define _STR(s) #s #define STR(s) _STR(s) // 转换宏 #define _CONS(a,b) int(a##e##b) #define CONS(a,b) _CONS(a,b) // 转换宏 printf(int max: %s\n, STR(INT_MAX)); // INT_MAX,int 型的最大值,为一个变量 #i ncludeclimits 输出为: int max: 0x7fffffff STR(INT_MAX) -- _STR(0x7fffffff) 然后再转换成字符串; printf(%d\n, CONS(A, A)); 输出为:200 CONS(A, A) -- _CONS((2), (2)) -- int((2)e(2)) 三、#和##的一些应用特例 1、合并匿名变量名 #define ___ANONYMOUS1(type, var, line) type var##line #define __ANONYMOUS0(type, line) ___ANONYMOUS1(type, _anonymous, line) #define ANONYMOUS(type) __ANONYMOUS0(type, __LINE__) 例:ANONYMOUS(static int); 即: static int _anonymous70; 70 表示该行行号; 第一层:ANONYMOUS(static int); -- __ANONYMOUS0(static int, __LINE__); 第二层: -- ___ANONYMOUS1(static int, _anonymous, 7

文档评论(0)

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

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

1亿VIP精品文档

相关文档