如何使 C++ 中的 getopt 严格执行选项检查?

How do I make getopt in C++ do option checking strictly?

我正在使用 getopt 为用 C++ 编写的 CLI 解析输入。 我有多头和空头选项,我的结构 long_options[] 元素如下所示:

{"verbose", no_argument, NULL, "v"}

一个观察是 - 在命令行上,即使我通过

# mycommand --verb

它仍然接受它并路由到处理冗长行为的函数。 有没有办法让 getopt 进行严格的选项检查?它不应该接受 --verb 为 --verbose 对吗?

根据手册[1] [2] and the source[3]无法关闭匹配的缩写长选项。

您的选择是接受这种行为(这种行为已经存在了几十年并且不太可能让用户感到惊讶)或者寻找另一个允许关闭长选项缩写的选项解析器库。