the official tutorial의 예제를 기반으로 문제를 재현했습니다.부스트 프로그램 옵션 - 함수 결과에서 arg 이름 전달
#include <string>
#include <boost/program_options.hpp>
#include <iostream>
namespace po = boost::program_options;
using namespace std;
const char* withAlias(const char* name, const char* alias)
{
return (string(name) + "," + alias).c_str();
}
int main(int argc, char** argv)
{
po::options_description desc;
const auto name = withAlias("compression", "c");
desc.add_options()
(name, po::value<int>(), "compression bla bla"); // this doesn't work
("compression,c", po::value<int>(), "asdasdasd"); // this works
po::variables_map vm;
po::store(po::parse_command_line(argc, argv, desc), vm);
po::notify(vm);
if (vm.count("compression"))
cout << "Compression set to " << vm["compression"].as<int>() << endl;
else
cout << "Compression not set" << endl;
return 0;
}
내 프로그램을 실행 : unrecognized option '--compression'
을 : my_bin --compression 5
, 그것은라는 오류가 발생합니다.
별칭 (별칭 ("compression", ...)
)을 사용하지 않을 때 예상대로 작동합니다.
이름 문자열에 ,
이 있지만 문자열 리터럴로 전달되지 않은 경우에만 발생합니다.
실제로이 문제의 원인을 파악할 수 없습니다.
는'당신이 시도 했나 "-c, - 압축"'? (지금은 링크를 읽으면 작동하지 않을 것입니다) –
@ YuvalBen-Arie가 작동했는데 작동하지 않았습니다. 동일한 오류 –