Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 我使用';退出(退出失败)';,但是我得到了一个错误_C_Compiler Errors - Fatal编程技术网

C 我使用';退出(退出失败)';,但是我得到了一个错误

C 我使用';退出(退出失败)';,但是我得到了一个错误,c,compiler-errors,C,Compiler Errors,我这样写。 错误说明“c:17:9:error:函数'exit'的参数太少” 但更改为“退出(1)”,然后只说警告,但要运行。 为什么我不能使用“退出(退出失败)” #包括 #包括 #定义退出\u失败/*已定义实现*/ #定义退出\成功/*已定义实现*/ 内部主(空) { char*社署; int ret; swd=getcwd(NULL,0); printf(“1.%s\n”,社署); printf(“2.%s\n”,getcwd(NULL,0)); 如果(!社署){ 佩罗(“getcwd”)

我这样写。 错误说明“c:17:9:error:函数'exit'的参数太少” 但更改为“退出(1)”,然后只说警告,但要运行。 为什么我不能使用“退出(退出失败)”

#包括
#包括
#定义退出\u失败/*已定义实现*/
#定义退出\成功/*已定义实现*/
内部主(空)
{
char*社署;
int ret;
swd=getcwd(NULL,0);
printf(“1.%s\n”,社署);
printf(“2.%s\n”,getcwd(NULL,0));
如果(!社署){
佩罗(“getcwd”);
退出(退出失败);
}
ret=chdir(“dd”);
//printf(“3.%s\n”,ret);
printf(“4.%s\n”,getcwd(NULL,0));
如果(ret){
perror(“chdir”);
}
ret=chdir(社会福利署);
printf(“5.%s\n”,getcwd(NULL,0));
在这里输入代码
如果(ret){
perror(“chdir”);
出口(1);
}
免费(社署);;
}

正如您在评论中所说,您已将退出故障定义为无,顺便说一句,
退出故障是在stdlib.h中定义的,因此您无需定义它,只需包含并使用它即可。如果您想自己定义它,请执行以下操作:

#定义退出失败-1/*一个不等于0的数字*/

#定义退出成功0

您已将退出失败定义为无意义,因此编译器会看到
EXIT()
。包括
,用于执行定义的
退出故障的定义。(定义的实现是指编译器的实现,而不是你的程序。)@MOehm:我本来想把它作为一个aswer发布的,但你在我之前是作为一个注释发布的。这正是这个问题的正确答案。@running.t:我只是做了一个评论,因为这似乎是一个微不足道的问题。如果你把它写下来作为回答,我会删除评论。
#include <stdio.h>
#include <unistd.h>
#define EXIT_FAILURE /*implementation defined*/
#define EXIT_SUCCESS /*implementation defined*/

int main(void)
{
    char *swd;
    int ret;

    swd = getcwd(NULL,0);
    printf("1.%s\n",swd);
    printf("2.%s\n",getcwd(NULL,0));

    if(!swd){
        perror("getcwd");
        exit(EXIT_FAILURE);    
    }
    ret = chdir("dd");
    //printf("3.%s\n",ret);
    printf("4.%s\n",getcwd(NULL,0));
    if(ret){
        perror("chdir");
    }
    ret = chdir(swd);
    printf("5.%s\n",getcwd(NULL,0));
    enter code here
    if(ret){
        perror("chdir");
        exit(1);
    }
    free(swd);
}