[問題] 如何新增一個餵參數的flag?

看板C_and_CPP作者 (魯魯米)時間7年前 (2017/04/13 01:21), 7年前編輯推噓4(406)
留言10則, 8人參與, 最新討論串1/1
開發平台(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

04/13 02:49, , 1F
-D name 或是 -D name=definition ??
04/13 02:49, 1F

04/13 02:52, , 2F
這是 predefine name as a macro, 可以搭配 ifdef
04/13 02:52, 2F
謝謝,我會研究看看!

04/13 02:54, , 3F
你是想加一個flag影響編譯行為嗎..?
04/13 02:54, 3F
沒有,你這樣說我才發現原本想的方式不對囧 已修改問題了真的非常感謝

04/13 07:25, , 4F
你需要了解甚麼是argc argv
04/13 07:25, 4F
好的, 謝謝提點!

04/13 09:49, , 5F
指定一個function name要做什麼?
04/13 09:49, 5F
已補充, 謝謝

04/13 13:17, , 6F
auto gen source code?
04/13 13:17, 6F

04/13 13:17, , 7F
建議-D %%i
04/13 13:17, 7F

04/13 15:58, , 8F
getopt
04/13 15:58, 8F

04/13 16:04, , 9F
以為要給clang加參數 程式的參數那getopt的確沒問題
04/13 16:04, 9F
※ 編輯: lulumi0618 (114.33.211.94), 04/15/2017 12:18:12

04/26 20:55, , 10F
google gflag
04/26 20:55, 10F
文章代碼(AID): #1Oxc8YRZ (C_and_CPP)