Использование execlp () и появление предупреждений, связанных с указателем - PullRequest
0 голосов
/ 27 февраля 2011

Я пытаюсь использовать execlp (), но продолжаю получать предупреждения, что я не уверен, как исправить

pathPiece - это массив путей, которые необходимо использовать для поиска команды.
pathNum - количество путей, которые нужно попробовать.

void execute(const char *argv, char *path, int argNum, const char **pathPiece, int pathNum){
  int i, ret;
  for(i = 0; i < pathNum; i++)
    if(argNum == 0){
      ret = execlp((const char *)&pathPiece[i], (const char *)argv[0], (const char*)NULL);
    if(ret == -1)
      continue;
    else{
      break;
    }
  }
}

предупреждение: приведение к указателю из целого числа другого размера

Ответы [ 3 ]

1 голос
/ 27 февраля 2011

pathPiece равно const char *pathPiece, поэтому pathPiece [i] представляет собой один символ. Из вашего описания звучит так, будто вы хотите, чтобы pathPiece был const char ** вместо.

1 голос
/ 27 февраля 2011

, поскольку pathPiece равно const char **, pathPiece[i] будет иметь тип const char *, а &pathPiece[i] будет иметь тип const char **. Передача этого типа в execlp неверна и вызывает неопределенное поведение.

1 голос
/ 27 февраля 2011

Работает ли для вас использование: (const char *) & pathPiece [i]?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...