是否可以将“ char * argv []”保存到C ++中的变量?

问题描述 投票:-1回答:1

我希望能够将argv保存到一个结构中,以便可以将其传递给类似这样的函数:

struct Parameters {
    int argc;
    char * argv[];
};

void Start(
    Parameters P
) {

};

int main (
    int argc,
    char * argv []
) {
    Parameters P;
    P.argc = argc;
    P.argv = & argv;


    return 0;
}

但是:

clang++ -std=c++2a -stdlib=libc++ -rtlib=compiler-rt -Ofast Start.cpp -o Start && ./Start;

我遇到此错误:

Start.cpp:21:9: error: array type 'char *[]' is not assignable

是否有将argv保存到变量的方法?任何帮助将不胜感激。

c++ clang++
1个回答
0
投票

您可以简单地更改为:

struct Parameters  
{
    int argc;
    char ** argv;
};

您的指向char的argv指针数组将衰减为指向char的指针的指针。然后,您的主体变得更简单了:

P.argv = argv;
© www.soinside.com 2019 - 2024. All rights reserved.