51#include <visp3/core/vpConfig.h>
52#include <visp3/core/vpDebug.h>
53#include <visp3/io/vpParseArgv.h>
55#define GETOPTARGS "d:f:i:h"
57#ifdef ENABLE_VISP_NAMESPACE
61void usage(
const char *name,
const char *badparam,
int i_val,
float f_val,
double d_val);
62bool getOptions(
int argc,
const char **argv,
int &i_val,
float &f_val,
double &d_val);
75void usage(
const char *name,
const char *badparam,
int i_val,
float f_val,
double d_val)
78Parsing command line arguments example.\n\
81 %s [-i <integer>] [-f <float>] [-d <double> [-h]\n\
101 fprintf(stderr,
"ERROR: \n");
102 fprintf(stderr,
"\nBad parameter [%s]\n", badparam);
118bool getOptions(
int argc,
const char **argv,
int &i_val,
float &f_val,
double &d_val)
126 d_val = atof(optarg_);
129 f_val =
static_cast<float>(atof(optarg_));
132 i_val = atoi(optarg_);
135 usage(argv[0],
nullptr, i_val, f_val, d_val);
139 usage(argv[0], optarg_, i_val, f_val, d_val);
144 if ((c == 1) || (c == -1)) {
146 usage(argv[0],
nullptr, i_val, f_val, d_val);
147 std::cerr <<
"ERROR: " << std::endl;
148 std::cerr <<
" Bad argument " << optarg_ << std::endl << std::endl;
155int main(
int argc,
const char **argv)
163 double d_val = 3.1415;
166 if (getOptions(argc, argv, i_val, f_val, d_val) ==
false) {
170 cout <<
"Your parameters: " << endl;
171 cout <<
" Integer value: " << i_val << endl;
172 cout <<
" Float value: " << f_val << endl;
173 cout <<
" Double value: " << d_val << endl << endl;
174 cout <<
"Call " << argv[0] <<
" -h to see how to change these parameters." << endl;
179 std::cout <<
"Catch a ViSP exception: " <<
e << std::endl;
error that can be emitted by ViSP classes.
static bool parse(int *argcPtr, const char **argv, vpArgvInfo *argTable, int flags)