作者tropical72 (藍影)
看板C_and_CPP
標題Re: [問題] function name
時間Wed Apr 27 01:36:01 2011
※ 引述《villix (瓜子被蜀國的狗吃了)》之銘言:
: 開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
: c++
: 問題(Question):
: 請問有方法可以抓出此堆疊所有的function name嗎
: 補充說明(Supplement):
: 網路上面我只有找到__FUNCTION__可以直接印出現在這個function的名稱
: 然後我也有找到backtrace這個,可是這好像一定要linux環境,所以想請問一下
: 大家有沒有什麼好方法可以知道堆疊中的函式名稱,謝謝QQ
剛好前二天在搞這個 XD
C++ 我沒試過,Linux 我沒試過,
我試過 dev-c / vc2008 / vc 2010, 無誤
#include <stdio.h>
void show_name(char *name){printf("%s\n", name);}
void foo(){show_name(__FUNCTION__);}
int main()
{
show_name(__FUNCTION__);
foo();
getchar();
return 0;
}
據聞, bcb 是 __FUNC__
MSDN 上說明:
http://msdn.microsoft.com/en-us/library/b0084kay(v=vs.80).aspx
Valid only within a function and returns the undecorated name of the
enclosing function (as a string). __FUNCTION__ is not expanded if you use the
/EP or /P compiler option.
最後一段話多加留意
--
YouLoveMe() ? LetItBe() : LetMeFree();
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.177.73.222
→ tropical72:再不行請附上 compiler 版本 04/27 01:36
推 villix:樓上的大大我是用VC2003的,謝謝你的回應>< 04/27 01:40
→ villix:不過我是希望說Foo裡面就可以往外面抓堆疊抓到 04/27 01:41
→ villix:像是先Foo然後Main這樣QQ 04/27 01:41
→ tropical72:那上面這段可行嗎? 04/27 01:43
推 villix:可行,謝謝^^ 04/27 01:48