【问题标题】:Can I get a pointer to the current function?我可以获得指向当前函数的指针吗?
【发布时间】:2012-09-18 03:13:50
【问题描述】:

是否可以获得指向当前函数的指针?如果是,我该怎么做?

动机:我有一个函数做一些日志记录,并想调用

log(currentfunc, "blabla")

例如,哪个输出。

【问题讨论】:

标签: c function pointers logging


【解决方案1】:

您可以通过预定义标识符__func__ 获取当前函数的名称(但不是指向它的指针),它是 C99 的一部分。

log(__func__, "blabla");

Here's the reference

【讨论】:

  • 你知道在 c89 中的方法吗?在c89中不需要这样做,但我想知道它。
  • @cmusicmatze:不,在 c89 中你能做的最好的事情就是使用 __FILE____LINE__ 或者利用你的实现提供的非标准可能性,如果有的话。
  • @einpoklum:不完全是。 C++11 有__FUNCTION__,它也有同样的作用。见stackoverflow.com/questions/15126387/…
  • @ArmenTsirunyan: IIANM, __FUNCTION__ 扩展为字符串,而不是标识符。
  • @einpoklum:C99 中的__func__ 也是如此,不是吗?您无法在 C 或 C++ 中获得指向当前函数的 指针
【解决方案2】:

我不确定指向函数的指针,但预定义标识符__func__ 返回函数的名称。也许这可以帮助...

事实上,我会将您的函数log 替换为宏,这样您就不必每次都粘贴名称,如下所示:

#define log(x) log(__func__,x)

【讨论】:

  • @Kirilenko hmmm 预定义标识符...好的
【解决方案3】:

您可以结合使用 __FILE____LINE__。它将与MicrosoftGCC 编译器一起使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-12
    • 2011-03-04
    • 1970-01-01
    • 2016-03-20
    • 2021-01-24
    • 2023-03-24
    • 2018-08-08
    • 2015-09-10
    相关资源
    最近更新 更多