Re: [問題] output 某function 所在位置
※ 引述《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:15
→
01/01 21:53,
01/01 21:53
→
01/01 21:53,
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
01/07 01:00, 1F
→
01/07 01:26, , 2F
01/07 01:26, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):