c - 为什么 __func__ 在 C 的某些函数中返回 <unknown>?

标签 c gcc c99 func

我有很多不同的函数,它们都有简单的printf使用 __func__ 的语句类似于这个:

printf("%s - hello world!", __func__);

现在我遇到的问题是在某些函数中它返回 <unknown>而不是函数名称。

这是为什么呢?难道我做错了什么?据我所知__func__c99 的一部分所以我不明白为什么它没有像宣传的那样工作。

我在 Debian 中使用 GCC 4.7.2。

最佳答案

听起来您包含的 header 必须执行与此类似的操作 bug并定义 __func__ 如下:

define __func__ "<unknown>"

因此您只有在包含该 header 时才能看到它。对此进行测试的一种快速方法是在 __func__ 不起作用的代码部分中使用 __FUNCTION__。然后你需要缩小它并找出哪个标题有麻烦的逻辑并修复它。

关于c - 为什么 __func__ 在 C 的某些函数中返回 <unknown>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18016018/

相关文章:

c - getnameinfo 的签名在 glibc 版本之间发生变化,我该如何匹配它?

c++ - 实例化同一类中的多个对象时,代码不会运行,但是实例化具有相同代码的重复类中的对象时,代码会起作用

c - 为什么设置了 -std=c99 后 gcc 找不到 random() 接口(interface)?

c - 需要帮助理解我的示例的 malloc(0)

c - 需要避免用户输入超过 8 个字符时缓冲区溢出

c++ - cc1plus : error: unrecognized command line option "-std=c++0x"

c - gcc 栈内存分配

我可以在此函数中使用 restrict 限定符吗?

c - "define"不是C99中的保留关键字或宏名称吗?

c++ - 什么时候用汇编语言调试c/c++程序?