ошибка: несовместимые типы при назначении типу "struct XXX" из типа "char **" - PullRequest
0 голосов
/ 20 июня 2019

Я получаю ошибку в своем коде C:

error: incompatible types when assigning to type ‘struct command’ from type ‘char **’.

Я не знаю, почему я не могу присвоить char * var [] для char **.

typedef struct Appstruct{
    char *app[10];
} APP;
struct command
{
   char **argv;
};
struct command cmd[10];
for(i=0;i<pipecount+1;i++)
{
       cmd[i]=APPS[i].app;
}

Но если я присваиваю массиву одно за другим (без использования цикла для присвоения), все в порядке:

struct command cmd [] = { APPS[0].app, APPS[1].app }; 

Как мне изменить мой код?

Ответы [ 2 ]

4 голосов
/ 20 июня 2019

Вы не можете назначить объекту struct, вам необходимо назначить его члену:

cmd[i].argv = APPS[i].app;
3 голосов
/ 20 июня 2019

Этот

struct command cmd [] = { APPS[0].app, APPS[1].app }; 

на самом деле является небрежной версией правильного

struct command cmd [] = {
 {APPS[0].app}, 
 {APPS[1].app}
};

, который инициализирует массив struct command cmd двумя struct с, чтокаждый по очереди инициализируется с использованием APPS[0].app и APPS[1].app.

Таким образом, чтобы имитировать поведение инициализации в качестве присваивания, выполните следующие действия:

  for(i=0;i<pipecount+1;i++)
  {
    cmd[i]=(struct command){APPS[i].app};
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...