是否可以獲取指向當前函數的指針?如果是這樣,我該怎麼做?我可以得到一個指向當前函數的指針嗎?
動機:我有一個功能做一些記錄,並想打電話
log(currentfunc, "blabla")
,做一些輸出的例子。
是否可以獲取指向當前函數的指針?如果是這樣,我該怎麼做?我可以得到一個指向當前函數的指針嗎?
動機:我有一個功能做一些記錄,並想打電話
log(currentfunc, "blabla")
,做一些輸出的例子。
你知道在c89中使用它的方法嗎?沒有必要在C89中做到這一點,但我想知道它。 – musicmatze
@cmusicmatze:不,在c89中,你可以做的最好的事情就是使用'__FILE__'和'__LINE__',或者利用你的實現提供的非標準可能性(如果有的話)。 –
這是否在C++(例如C++ 11)中起作用? – einpoklum
我不知道有關指針的函數,但是預定義的標識符__func__
返回函數的名稱。也許這可以幫助...
事實上,我與宏替換你的函數log
,這樣你就不必在名稱每次粘貼,因爲這樣的:
#define log(x) log(__func__,x)
'__func__'不是宏。 – md5
@Kirilenko hmmm預定義標識符...好的 –
如果您想在大多數編譯器中進行日誌記錄,您可以使用宏獲取該函數的名稱。 _____func_____是宏如果內存提供 – Lefteris
另見這裏。 http://stackoverflow.com/questions/2154852/get-a-pointer-to-the-current-function-in-c-gcc – md5
不要調用你的函數'log' - 有一個常用的函數稱爲'在math.h中記錄'返回自然對數。 –