Как создать переменную char * [], чтобы ее можно было передать в функцию - PullRequest
0 голосов
/ 02 июля 2018

Я пытаюсь передать аргумент функции, которая принимает 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 голосов
/ 02 июля 2018

Предполагается, что функция принимает параметры 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 );
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...