__FUNCTION__,__FILE__是如何实现的

发布于 2022-10-15 08:23:36 字数 42 浏览 25 评论 0

想知道这个是如何实现的,另外,如果知道一个函数的地址,能否得到在这个地址上的函数名?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

满天都是小星星 2022-10-22 08:23:36

编译时记录的

云仙小弟 2022-10-22 08:23:36

这个好像是编译器内部的宏

小傻瓜 2022-10-22 08:23:36

怎么实现的,没想过,但是编译过程中做这事应该没难吧,虽然我没有学过编译原理。

已经函数地址可以得到函数名,不过要在编译以后,有调试信息才行。

蝶舞 2022-10-22 08:23:36

编译的时候,加调试信息没问题。
那么如何得到函数名呢?

举例:
将函数指针B传到函数A中,想在A中得到传入的函数指针B的函数名。

鱼忆七猫命九 2022-10-22 08:23:36

编译的时候,加调试信息没问题。
那么如何得到函数名呢?

举例:
将函数指针B传到函数A中,想在A中得到 ...
eveson 发表于 2011-04-28 10:17

    把B函数名作为参数带进去吧。。

爱的故事 2022-10-22 08:23:36

看一下预处理之后的代码就知道了, 全替换了

情泪▽动烟 2022-10-22 08:23:36

回复 7# 雨过白鹭洲

    不想在对外的接口提供这么个参数,最好是内部处理下。

鲜血染红嫁衣 2022-10-22 08:23:36

看一下预处理之后的代码就知道了, 全替换了
adam8157 发表于 2011-04-28 11:44

    写了个测试程序,这样的宏,展开之后直接就是结果,应该是编译预处理的时候就直接处理完了,没有显示中间的过程。
奇怪的是:__FILE__和__LINE__都是替换为最终结果,而__FUNCTION__没有替换,但是程序运行起来,还是可以打印正确结果。
推测,__FUNCTION__指向了可执行程序中的某个位置,这个位置放置了函数名字,不然为什么运行结果是对的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文