如何正确将char *const[256]转换为const char *const*?

4

我有这个结构体:

typedef struct cmdLine {
char * const arguments[256];
} cmdLine;

我还有一个参数cmdLine *pCmdLine。我想使用execv,所以我写了execv((pCmdLine->arguments[0]), pCmdLine->arguments);。第二个参数没有被正确传递给execv,我想问如何正确转换它。
我得到的警告是:将'char* const[256]'传递给类型为'const char *const *'的参数会丢弃嵌套指针类型中的限定符。我希望能获得一些帮助,正确地进行转换,谢谢。

为什么你不能一开始就将它设置为适当的类型(char const * const[256])呢? - molbdnilo
因为cmdLine是我在项目中必须使用的结构体。 - J. Doe
Windows 10 @AnttiHaapala - J. Doe
在Windows 10中没有execve,但有_execve,它具有适用于C++的const char * const - Antti Haapala -- Слава Україні
显示剩余2条评论
1个回答

0

我看不到任何问题:

#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>

#include <stdio.h>

struct
{
char * const arr[20];
}*str;

void foo(char  *const par[])
{
    volatile const char * const ptr = par[4]; 
    printf("%s\n", par[7]);
    printf("%s\n", ptr);
}


void foo1()
{
    foo(str -> arr);
}

https://godbolt.org/z/4Sv4a8


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接