我似乎无法使用getopt_long()获取多个命令行参数。打印后我的代码段错误1.我有另一种解析命令行的方法,但它杀了我,这不起作用。它如此简单。有任何想法吗?谢谢
int main(int argc, char** argv) {
int val;
std::string clcf;
int futures (0), blocks(0);
static struct option long_options[] =
{
{ "config" , required_argument , 0 , 'c' },
{ "sstest" , optional_argument , 0 , 's' },
{ "btest" , optional_argument , 0 , 'b' },
//{ "ssfspreads" , optional_argument , 0 , 'S' },
//{ "blockspreads" , optional_argument , 0 , 'B' },
{ 0 , 0 , 0 , 0 }
};
while ((val = getopt_long (argc, argv, GETARGLIST.c_str(), long_options, 0)) != -1)
{
switch (val)
{
case 'c': clcf = optarg; break;
case 's':
std::cout << "1" << std::endl;
futures = atoi( optarg ); break;
std::cout << "2" << futures << std::endl;
break;
case 'b':
std::cout << "1" << std::endl;
//blocks = atoi(optarg);
break;
//case 'ss': ssf_spreads = get_value<unsigned>(optarg); break;
//case 'bs': block_spreads = get_value<stdunsigned>(optarg); break;
default: break;
}
}
答案 0 :(得分:0)
你是如何传递论据的?你应该在没有空格的情况下传递参数,否则会出现段错误。这有详细信息:getopt does not parse optional arguments to parameters