注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

我心飞翔

我有一个梦想,……

 
 
 

日志

 
 
 
 

宏定义中的‘#’、‘##’操作符和‘...’、‘ __变参__ ’  

2011-06-12 17:52:50|  分类: 编程语言-习语言 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

一、‘#’
 在宏函数的替换部分,#符号用作一个预处理运算符,它可以把参数的实际值转换成字符串。
例如:
 如果‘甲’是一个宏参数,那么‘#甲’就是一个字符串,表示实际参数值的名字串,即把实际参数名转化成相应的字符串。该过程称为参数字符串化.
代码如下:

 #包含 “习语言系统.接口”
 
 #定义 平方(x) 格式输出(#x "的平方是 %整。%行",(x)*(x))
 
 整数类型 主函数(整数类型 参数个数, 字符类型* 参数[] )
 {
  整数类型  年龄 = 12;
     平方(年龄);
     平方(1+2+4);
  返回 0;
 } 
 
 输出如下:
  年龄的平方是 144。
  1+2+4的平方是 49。

    这里:第一次调用宏时使用“年龄”代替#x;第二次调用时用“1+2+4"代替#x。

二、‘##’
 ‘##’运算符可以用在宏函数的替换部分,把两个语言符号组合成单个语言符号,如一个参数经组合成为另一个变量或函数名 。
例如:
 #定义  广东车牌( 号码 )  粤A##号码
 
这样宏调用:
 广东车牌( 123456 )
展开后就是:
 粤A123456
 
程序:

#包含 “习语言系统.接口”

#定义  广东车牌( 号码 )  “粤A##号码”
#定义  输出变量( 编号 )  格式输出(“变量%整= %整%行”,编号,变量##编号 )

整数类型 主函数(整数类型 参数个数, 字符类型* 参数[] )
{
 整数类型  变量1= 11, 变量2= 22;     
 格式输出( “车牌=%串%行”, 广东车牌( 888888) );
 输出变量(1);
 输出变量(2);
  返回 0;
}  


三、变参宏 ‘...’和‘ __变参__ ’
 变参宏定义中参数列表的最后一个参数为省略号(也就是三个点)。预定义宏‘__变参__’被用在替换部分中,以表示替换发生时省略号代表的内容。
例如:

#包含 “习语言系统.接口”

#定义  宏输出(...)  格式输出(“输出=>”  __变参__ )

整数类型 主函数(整数类型 参数个数, 字符类型* 参数[] )
{    
 宏输出( “你好%行”);
 宏输出( “小明年龄=%整”,10 );
    返回 0;

运行输出如下:
输出=>你好
输出=>小明年龄=10
 
省略号只能代替最后面的宏参数。

#定义  变参宏(甲,乙,...)     正确
#定义  变参宏(甲,...,乙)     错误

  评论这张
 
阅读(237)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017