我正在尝试将参数传递给以char *[]
作为输入的函数:
int nArgs = 0;
CommandLineToArgvW(GetCommandLineW(), &nArgs);
const int commandLineArgsBufferSize = 500;
char commandLineArgs[commandLineArgsBufferSize];
wcstombs(commandLineArgs, GetCommandLineW(), commandLineArgsBufferSize);
int result = Catch::Session().run(nArgs, &commandLineArgs);
这是函数原型。
int Session::run( int argc, char* argv[] );
我遇到了编译器错误:
C2664'int Catch :: Session :: run(void)':无法将参数2从'char(*)[500]'转换为'char * []'
答案 0 :(得分:0)
该函数可能旨在将main()的参数用作参数。所以你想要类似的东西:
int main( int argc, char * argv[] ) {
int rv = Session::run( argc, argv );
}
如果您想自己构造参数,则类似:
void f() {
char * argv[] = {"foo", "bar" };
int rv = Session::run( 2, argv );
}