包含stdlib.h导致代码无法正确编译

时间:2019-05-04 18:40:19

标签: c

当我需要包含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 个答案:

答案 0 :(得分:2)

EXIT_SUCCESS是C语言中的标准宏(定义)。请勿将其用作变量名。

答案 1 :(得分:0)

NULLEXIT_SUCCESS<stdlib.h>中定义的,如果包含<stdlib.h>,则不得将此标识符用于其他目的

无论如何,您的代码没有多大意义,因为看起来main中有一个无限循环。