无法运行以下代码

Cannot run the following code

本文关键字:代码 运行      更新时间:2023-10-16

我正在尝试lean mean c++选项解析器,我尝试了示例

#include <iostream>
 #include "optionparser.h"
 enum  optionIndex { UNKNOWN, HELP, PLUS };
 const option::Descriptor usage[] =
 {
  {UNKNOWN, 0,"" , ""    ,option::Arg::None, "USAGE: example [options]nn"
                                             "Options:" },
  {HELP,    0,"" , "help",option::Arg::None, "  --help  tPrint usage and exit." },
  {PLUS,    0,"p", "plus",option::Arg::None, "  --plus, -p  tIncrement count." },
  {UNKNOWN, 0,"" ,  ""   ,option::Arg::None, "nExamples:n"
                                             "  example --unknown -- --this_is_no_optionn"
                                             "  example -unk --plus -ppp file1 file2n" },
  {0,0,0,0,0,0}
 };
 int main(int argc, char* argv[])
 {
   argc-=(argc>0); argv+=(argc>0);              // skip program name argv[0] if present
   option::Stats  stats(usage, argc, argv);    
   option::Option options[stats.options_max], buffer[stats.buffer_max]; //------------Error Comes here-----------------------
   option::Parser parse(usage, argc, argv, options, buffer);
   if (parse.error())
     return 1;
   if (options[HELP] || argc == 0) {
     option::printUsage(std::cout, usage);
     return 0;
   }
   std::cout << "--plus count: " <<
     options[PLUS].count() << "n";
   for (option::Option* opt = options[UNKNOWN]; opt; opt = opt->next())
     std::cout << "Unknown option: " << opt->name << "n";
   for (int i = 0; i < parse.nonOptionsCount(); ++i)
     std::cout << "Non-option #" << i << ": " << parse.nonOption(i) << "n";
 }

但是得到错误

错误1错误C2057:期望的常量表达式
错误2:不能分配一个常量大小为0的数组
错误3:"选项":未知大小错误4:'buffer':未知大小

有什么建议吗?

option::Option options[stats.options_max], buffer[stats.buffer_max];

数组的大小必须在编译时已知。

vector<option::Option> options(stats.options_max), buffer(stats.buffer_max);