如何创建为char * []的变量,以便可以将其传递给函数

时间:2018-07-02 19:33:18

标签: c++ visual-c++

我正在尝试将参数传递给以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 * []'

1 个答案:

答案 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 );
 }