Re: [問題] output 某function 所在位置

看板C_and_CPP作者 (藍影)時間13年前 (2012/01/01 14:18), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《whatacatch (一見鍾情)》之銘言: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : C : ex: : A檔案: : int main(){ : int a=10; : abs(a); : return 0; : } : 然後我的B檔案希望能夠output : "abs()出現在A檔案中的main function的第5行" : 有什麼方法或是可用函式來做我的B檔案? : 謝謝

01/01 21:15,

01/01 21:53,
t大的方法我有想過 但是不知道 如何知道 abs出現在A的
01/01 21:53

01/01 21:53,
哪個function裡
01/01 21:53
你該先界定你的問題打算做到多大 我猜你要做的已經有點像是 compiler 的語法分析器, 單純要判斷在哪個 function 裡其實也還好, 簡單的說一般 function 撰寫上有個特性 int func(int a,int b) {} int func(void) {} int func(){} getline 後只要不停 split space, space 之後判斷該行有沒有 左邊之小括號 與 左邊之花括號 , 即可判斷目前所在之 function scope 。 但偏偏要考慮較複雜的情況是 int func(int a, int b){ } int func ( int a, int b) { } int func ( int a, int b ) { } int func( int a, int b) { } int func(int a, int b) { } 等不同撰碼風格,另再考慮字串問題的話會顯得更複雜 char *str = "int func(int a, int b) {"; 如果是應用在 c++ 的話,還要再分 namespace , class 做隔開之處理, 最後等於是回歸到規則之拆解。 其它部份我很弱,類似的問題我是畫 FSM 下來解,缺點是速度慢, 優點是維護容易 (如果 FSM 架構用對的話是較易維護沒錯) 但深信這部份要自己砍不容易, 相信也有一些 Synmax Library 可用,我所知只有一套個人開發的 Vczh Library++, 其他的就不再獻醜。 -- 世界上有種, 將 不可能 轉換為 無限可能 的強大力量, 我稱它為 - 信念 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.76.201

01/07 01:00, , 1F
有 __FUNCTION__ macro可用呀
01/07 01:00, 1F

01/07 01:26, , 2F
_FUNCTION_ 必須限定 vs, 且可能與原po需求有點出入。
01/07 01:26, 2F
文章代碼(AID): #1F06iuzu (C_and_CPP)
文章代碼(AID): #1F06iuzu (C_and_CPP)