免费注册 查看新帖 |

Chinaunix

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

有什么办法在编译期自动得到函数名? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-16 17:35 |只看该作者 |倒序浏览
有什么办法在编译期自动得到函数名?

比如

  1. int fun(int i){
  2.    cout << "i = "<< i << endl;
  3. }


  4. /*
  5. -----------------------------------------------------
  6. 有办法在编译期让编译器自动把
  7. "int fun(int)" 字符串填写到下面的fun_name中吗?
  8. -----------------------------------------------------
  9. */
  10. char fun_name[512];


  11. int main(){

  12.         cout << fun_name << endl;
  13.         
  14.         return 0;
  15. }

复制代码

论坛徽章:
0
2 [报告]
发表于 2009-01-16 17:42 |只看该作者
sprintf(fun_name, __func__);

这好像是gcc的扩展,不知道vs是否支持

论坛徽章:
0
3 [报告]
发表于 2009-01-16 17:59 |只看该作者
多谢多谢!
还有没有自动化程度更高点的.
每个函数里都加一句
sprintf(fun_name, __func__);
感觉还是有点费劲

论坛徽章:
0
4 [报告]
发表于 2009-01-16 18:05 |只看该作者

回复 #3 ljoo 的帖子

用宏

论坛徽章:
0
5 [报告]
发表于 2009-01-16 18:21 |只看该作者
原帖由 scutan 于 2009-1-16 18:05 发表
用宏

宏还是要一个函数一个函数地加啊.
主要我是想神不知鬼不觉得.

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
6 [报告]
发表于 2009-01-16 18:54 |只看该作者
原帖由 ljoo 于 2009-1-16 18:21 发表

宏还是要一个函数一个函数地加啊.
主要我是想神不知鬼不觉得.

然后呢?你想要做什么?

论坛徽章:
0
7 [报告]
发表于 2009-01-16 19:08 |只看该作者
原帖由 MMMIX 于 2009-1-16 18:54 发表

然后呢?你想要做什么?


想做个运行时反射啊.
远程过程调用啊.
远程类布署啊,调用啊.....等等.
想法太多了.:em11:

论坛徽章:
0
8 [报告]
发表于 2009-01-16 20:14 |只看该作者

回复 #7 ljoo 的帖子

………………你还是老老实实用 .NET 吧,C 再这么给你改下去和 .NET 也是五百年前一家人了。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
9 [报告]
发表于 2009-01-16 22:36 |只看该作者
原帖由 ljoo 于 2009-1-16 19:08 发表


想做个运行时反射啊.
远程过程调用啊.
远程类布署啊,调用啊.....等等.
想法太多了.:em11:

这些和得到自动得到函数名真的有很大关系么?

BTW,这个让我想起了 flw 那个半瓶醋吃饺子的帖子。。。

论坛徽章:
0
10 [报告]
发表于 2009-01-17 15:12 |只看该作者
原帖由 MMMIX 于 2009-1-16 22:36 发表

这些和得到自动得到函数名真的有很大关系么?

BTW,这个让我想起了 flw 那个半瓶醋吃饺子的帖子。。。

我对这些名词实现机制的确半懂不懂,不过是有点有趣的想法就想练练手.不用太打击积极性吧

如果A机器手里只有一些接口声明a(一堆函数名啦.)
B机器有这些接口的子类实现b
我想从A机器去通过socket调用b类里面的函数.
我总不能发函数指针过去吧
我想如果能得到函数名ackII码,发过去,B机器在函数名表里找一下不就成了吗?
然后又想让用户最好感觉不到这个差别. 所以想找办法让编译器自已填函数名表.

会不会还有更巧妙的做法.
不要对我说corba,com,我只是想找个题自已练习一下.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP