开发者

double-dash command line options instead of getopt

开发者 https://www.devze.com 2023-04-13 00:45 出处:网络
How can I accept a command line argument this way: ./a.out --printall so that inside my program, I have something like

How can I accept a command line argument this way:

./a.out --printall

so that inside my program, I have something like

if (printall) {
  // do something
}

I don't want to do this:

if (argc == 2)
  //PRINTALL exists

since my program can have multiple command line options:

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

Secondly, I don't want to use getopt , such that the command becomes

./a.out -pr开发者_开发问答intall 1

I just find ./a.out --printall cleaner than ./a.out -printall 1

Edit: I have seen programs that do this:

./a.out --help

I wonder how they work.


(About the argument parsing part of the question:)

You will need getopt_long() from <unistd.h>. This is a GNU extension.

For greater portability, you might consider Boost program options, though that's a compiled library.


Command line arguments cannot be used to trigger conditional compilation. The program has already been compiled before the program is run.

This is a very pedantic answer. For command-line options in general, see Kerrek SB's answer.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号