2013-08-02 40 views
6

我有很多不同的功能,它們都具有使用__func__類似於這樣一個簡單的printf聲明:爲什麼__func__在C中的某些函數中返回<unknown>?

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

現在我遇到的問題是,在一些功能它返回的<unknown>而不是函數名稱。

這是爲什麼?難道我做錯了什麼? AFAIK __func__c99的一部分,所以我不明白爲什麼它不像廣告一樣工作。

我在Debian中使用GCC 4.7.2。

+1

你可以提供一個[SSCCE](http://www.sscce.org/)我想知道它是否類似於這個http://bugs.mysql.com/bug.php?id=65294所以也許這是包含頭部的問題。 –

+2

你能告訴我們一個合適的情況嗎? – nouney

+0

難道你是建立不同的模塊使用不同的gcc選項C兼容? – alk

回答

2

這聽起來像你,包括必須做類似這樣的東西bug並定義__func__如下頭:

define __func__ "<unknown>" 

,所以你只能看到它時,你包括物管。快速測試此方法的方法是在__func__不起作用的代碼段中使用__FUNCTION__。然後你需要縮小它並找出哪個頭部有麻煩的邏輯並修復它。

相關問題