Включение stdlib.h приводит к невозможности правильной компиляции кода - PullRequest
0 голосов
/ 04 мая 2019

У меня есть кусок кода, когда мне нужно включить stdlib.h. Когда я не включаю этот заголовок, у меня нет проблем с компиляцией кода, но как только я включаю заголовок, мой код отказывается компилироваться. Он говорит мне, что ожидал идентификатор или "(" перед числовой константой. Я просмотрел свой код и не смог найти никакой проблемы, и, как уже говорилось, код прекрасно компилируется без включения этого заголовка.

Я новичок в C, так что извините за мой плохой код, я просто хочу выяснить, почему он выдаст мне эту ошибку.

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

int execute(char **args)
{

}


char** parse(void)
{
  char command[256];
  fgets(command, sizeof(command), stdin);

  char delimiter[] = " "; 
  char * pointer = strtok(command, delimiter);

  int tokens = 0;
  char ** final_command;

  while (pointer != NULL)
  {
   // final_command = (char**)realloc(final_command,   
      // (tokens+1)*sizeof(char*));
    //printf("%s\n", pointer);

   //pointer = strtok(NULL, delimiter);
  }
}


int main(int argc, char **argv)
{
  int EXIT_SUCCESS = 1;
  do 
  {
    printf("MyShell> ");
    char ** command = parse();
  } while (EXIT_SUCCESS);  

  return EXIT_SUCCESS;
}

Я компилирую с помощью команды gcc -o MyShell MyShell.c Точная ошибка, которую я получаю, говорит "ошибка: ожидаемый идентификатор или '(' перед числовой константой int EXIT_SUCCESS = 1;"

Ответы [ 2 ]

2 голосов
/ 04 мая 2019

EXIT_SUCCESS - это стандартный макрос (определение) в C. Не используйте его в качестве имени переменной.

0 голосов
/ 04 мая 2019

Как и NULL, EXIT_SUCCESS - это макрос , определенный в <stdlib.h>, если вы включите <stdlib.h>, вы не должны использовать этот идентификатор для других целей.

В любом случае ваш код не имеет особого смысла, поскольку, похоже, у вас есть бесконечный цикл в main.

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