作者lulumi0618 (鲁鲁米)
看板C_and_CPP
标题[问题] 如何新增一个喂参数的flag?
时间Thu Apr 13 01:21:36 2017
开发平台(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://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1492017698.A.6E3.html
1F:→ Hazukashiine: -D name 或是 -D name=definition ?? 04/13 02:49
2F:→ Hazukashiine: 这是 predefine name as a macro, 可以搭配 ifdef 04/13 02:52
谢谢,我会研究看看!
3F:→ x000032001: 你是想加一个flag影响编译行为吗..? 04/13 02:54
没有,你这样说我才发现原本想的方式不对囧 已修改问题了真的非常感谢
4F:推 Sidney0503: 你需要了解甚麽是argc argv 04/13 07:25
好的, 谢谢提点!
5F:→ james732: 指定一个function name要做什麽? 04/13 09:49
已补充, 谢谢
6F:推 Sex5F: auto gen source code? 04/13 13:17
7F:→ Sex5F: 建议-D %%i 04/13 13:17
8F:推 s25g5d4: getopt 04/13 15:58
9F:→ MOONRAKER: 以为要给clang加参数 程式的参数那getopt的确没问题 04/13 16:04
※ 编辑: lulumi0618 (114.33.211.94), 04/15/2017 12:18:12
10F:推 Kyoto: google gflag 04/26 20:55