免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2434 | 回复: 5
打印 上一主题 下一主题

请教:Perl 中是否能实现C++的宏替换 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-20 16:21 |只看该作者 |倒序浏览
想找到一个和C++中的宏替换一样Perl代码。

比如C++中: #define PP(x) cout<<#x<<"="<<##x<<" at "<<__FILE__<<":"<<__LINE__<<endl;
想知道如果用Perl来实现怎么搞?

备注:想做一个打印出错信息的函数,需要标记出错的文件位置,每次都写雷同的东西,想找个方法替代下
print "Error: failed to ** at", __FILE__, ":", __LINE__, "\n";

论坛徽章:
0
2 [报告]
发表于 2010-01-20 16:24 |只看该作者
source filter
为啥一定要替换代码呢 直接设个函数不好么

论坛徽章:
0
3 [报告]
发表于 2010-01-20 16:30 |只看该作者

回复 #2 DQP 的帖子

能具体点么?

我学Perl还在初级阶段。

只是知道C++可以这么玩,不知道Perl中怎么搞才能达到这样的目的

论坛徽章:
0
4 [报告]
发表于 2010-01-20 17:12 |只看该作者

回复 #3 jake20032004 的帖子

实现相通的功能:
sub pp{
    printf "Error: failed to %s at %s: %s\n", join('', @_), __FILE__, (caller())[-1];

论坛徽章:
0
5 [报告]
发表于 2010-01-20 17:28 |只看该作者

回复 #4 DQP 的帖子

多谢,验证了一下,,__LINE__的处理和想实现的是一致的,__FILE__还需要处理下。

貌似关键地方在:caller(),剩余的我自己搞了。

多谢!

论坛徽章:
0
6 [报告]
发表于 2010-01-20 17:43 |只看该作者
原帖由 jake20032004 于 2010-1-20 17:28 发表
多谢,验证了一下,,__LINE__的处理和想实现的是一致的,__FILE__还需要处理下。

貌似关键地方在:caller(),剩余的我自己搞了。

多谢!



调了一下:
sub pp
{
    foreach (caller)
    {
        print "-->", $_, "\n";
    }
}

第一输出为调用的函数
第二输出为调用的文件
第三输出为调用的行数

多谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP