Как правильно конвертировать char * const [256] в const char * const * - PullRequest
4 голосов
/ 20 апреля 2019

У меня есть такая структура:

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

У меня также есть аргумент cmdLine *pCmdLine.Я хочу использовать execv, поэтому я пишу execv((pCmdLine->arguments[0]), pCmdLine->arguments);.Второй аргумент не подходит должным образом к execv, и я хочу спросить, как его правильно преобразовать.

Я получаю предупреждение: Передача 'char * const [256]' 'в параметртипа 'const char * const *' отбрасывает квалификаторы во вложенных типах указателей .Я бы соврал за помощь, чтобы правильно преобразовать его, спасибо.

1 Ответ

0 голосов
/ 20 апреля 2019

Не вижу проблем:

#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

...