Доступ к двойному указателю из структуры и использование его в execvp - PullRequest
1 голос
/ 04 октября 2011

Я пытаюсь объявить один указатель на символ и двойной указатель на символ в структуре, как это:

typedef struct string3d {  
      char **x;  
      char *y;  
      } string3d;

Я объявляю массив этой структуры в моей основной программе, а затем анализирую ввод строк, делаю их токены и передаю их этой структуре. В основной программе я вызываю функцию для создания процесса, который по существу разветвляет ребенка. Я передаю эти строковые токены в execvp следующим образом:

execvp(*s1->y,s1->x);

Здесь s1 определяется как

struct string3d *s1;

но при компиляции это говорит:

ошибка: подписанное значение не является ни массивом, ни указателем.

Есть предложения? Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 04 октября 2011

Подпись функции:

int execvp(const char *file, char *const argv[]);

Это эквивалентно:

int execvp(const char *file, char **const argv);

Таким образом, вы должны назвать это так:

execvp(s1->y, s1->x);

(Предполагая, что s1 и s2 имеют тип string3d *)

1 голос
/ 04 октября 2011

Вы должны убедиться, что s1 является указателем, а не структурой.Если это структура, то вам нужны s1.x и s1.y, а не s1-> x и s1-> y.

...