双破折号命令行选项而不是getopt

时间:2011-10-13 17:27:44

标签: c command-line

如何以这种方式接受命令行参数:

./a.out --printall

所以在我的程序中,我有类似

的东西
if (printall) {
  // do something
}

我不想这样做:

if (argc == 2)
  //PRINTALL exists

因为我的程序可以有多个命令行选项:

./a.out --printread
./a.out --printwrite

其次,我不想使用getopt,这样命令变为

./a.out -printall 1

我发现./a.out --printall./a.out -printall 1

更干净

编辑: 我见过这样做的程序:

./a.out --help

我想知道它们是如何运作的。

2 个答案:

答案 0 :(得分:3)

(关于解析部分问题的论点:)

getopt_long()您需要<unistd.h>。这是一个GNU扩展。

为了更好的可移植性,您可以考虑使用Boost program options,尽管这是一个已编译的库。

答案 1 :(得分:2)

命令行参数不能用于触发条件编译。该程序已在程序运行之前编译。

这是一个非常迂腐的答案。对于一般的命令行选项,请参阅Kerrek SB的答案。