看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: Win10, Linux, ...) linux 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) clang/gcc 問題(Question): 我打算用clang寫一個source to source generation, 目前已經寫好基本的架構了,功能 正在慢慢加進去 (有一個generate.cpp可編譯成執行檔 然後./generate in.c 就會產生 out.c , 執行檔會去 traverse in.c中每行code, out.c暫時只有產生int main進去而已) 現在想要 ./generate in.c -myflag xxxx , 其中xxxx是in.c中的function name,產生的 out.c裡面會有整個xxxx function, 複製function我大概有想法怎麼做, 不過建立一個 flag並傳遞參數這邊我實在是觀念貧乏 因為以前實在沒碰過自訂一個flag不曉得該從哪邊下手。用google找custom flag也沒有 看到相關的資訊,感覺是關鍵字下錯了可是我不太確定該怎麼描述這個問題囧 請問有沒有人能夠提供一些比較精準的關鍵字讓讓我研究看看呢? 謝謝 補充說明(Supplement): 我主要想用在clang上,不過有gcc可以研究看看也可以喔,謝謝 **補充一下我後來選擇的方法** 研究了-D和getopt之後我的理解是這兩個方式好像都須要告訴使用者該給什麼參數 來做對應的事,但我的case不確定使用者會丟什麼input file,也不知道他會選擇哪個 function,無法用預設的方式來處理。(如果這理解有錯誤麻煩指正一下囧) http://www.rapidtables.com/code/linux/gcc/gcc-d.htm http://man7.org/linux/man-pages/man3/getopt.3.html 所以我研究了Sidney0503 大大建議的argc,argv之後,就用argv來做了。我簡單寫了一個 arg_parse(),把argc, argv轉成全域變數來處理,有需要的可以參考看看 https://goo.gl/VnPvFo -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.241.57.193 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1492017698.A.6E3.html
Hazukashiine: -D name 或是 -D name=definition ?? 04/13 02:49
Hazukashiine: 這是 predefine name as a macro, 可以搭配 ifdef 04/13 02:52
謝謝,我會研究看看!
x000032001: 你是想加一個flag影響編譯行為嗎..? 04/13 02:54
沒有,你這樣說我才發現原本想的方式不對囧 已修改問題了真的非常感謝
Sidney0503: 你需要了解甚麼是argc argv 04/13 07:25
好的, 謝謝提點!
james732: 指定一個function name要做什麼? 04/13 09:49
已補充, 謝謝
Sex5F: auto gen source code? 04/13 13:17
Sex5F: 建議-D %%i 04/13 13:17
s25g5d4: getopt 04/13 15:58
MOONRAKER: 以為要給clang加參數 程式的參數那getopt的確沒問題 04/13 16:04
※ 編輯: lulumi0618 (114.33.211.94), 04/15/2017 12:18:12
Kyoto: google gflag 04/26 20:55