引自the POSIX.1-2008 description about -W
option,
-W
(大写字母W)选项应保留给供应商选项。
引自Linux手册页GNU getopt handles -W
option as follows:
如果 optstring 包含 W ,后跟分号(;),则 {{1 <}> 被视为长选项
-W foo
。 (POSIX.2为 -W 选项保留了实现扩展。)
有人可以用更清晰的方式解释上述句子(直截了当)并解释为什么这样的选项有用吗?
上述陈述让我感到困惑,因为我认为--foo
(不是getopt
,getopt_long
)只能理解短期权。
答案 0 :(得分:5)
退房:http://www.gnu.org/software/gnuprologjava/api/gnu/getopt/Getopt.html
也可以使用特殊的POSIX参数指定长选项 格式(我非常劝阻)。这种形式的输入已启用 放置一个“W;” (是的,'W'然后是分号)在有效选项中 串。这会导致getopt将“-W”后面的名称视为 长选项的名称。例如,“-W outputdir = foo”将是 相当于“--outputdir = foo”。这个名字可以紧随其后 “-W”如此:“ - Woutputdir = foo”。处理选项参数 与正常的长期期权相同。如果字符串跟随“-W”那么 不表示有效的长选项,然后getopt()返回'W'和 呼叫者必须决定做什么。否则getopt()返回一个long 选项值如下所述。
答案 1 :(得分:2)
文档有点不清楚,我的解释是关于-W
的部分仅适用于getopt_long()
和getopt_long_only()
。
幸运的是,GNU C库是开源的。 :)
在内部,所有这三个函数都是通过调用worker函数(_getopt_internal()
)来实现的,并且-W
的处理是在该函数内部完成的。但是,如果没有可用的长选项定义(从getopt()
调用的情况就是如此),它将返回'W'
。
请参阅this commit,或直接点按即可直接阅读posix/getopt.c。