当我需要包含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之前的'(';”
答案 0 :(得分:2)
EXIT_SUCCESS是C语言中的标准宏(定义)。请勿将其用作变量名。
答案 1 :(得分:0)
像NULL
,EXIT_SUCCESS
是<stdlib.h>
中定义的宏,如果包含<stdlib.h>
,则不得将此标识符用于其他目的
无论如何,您的代码没有多大意义,因为看起来main
中有一个无限循环。