提示错误:

‘EEXIST’ undeclared (first use in this function)

each undeclared identifier is reported only once for each function it appears in

意思是:对于每个出现在其中的函数,每个未声明的标识符只报告一次

按照我们正常做法,肯定是添加头文件。

但是在这个代码中,并不是 ‘EEXIST’ undeclared (first use in this function) 它的问题。

原本出错的代码:

#include <sys/types.h>
#include <sys/stat.h>
#include <error.h>
#include <stdio.h>

//int mkfifo(const char *pathname, mode_t mode);

int main()
{
        if(mkfifo("./file",0600) == -1 && error != EEXIST){
                printf("creat file fail\n");
                perror("why");
        }

        return 0;
}

 根据这个错误提示,明显就应该做的是,添加头文件。但是,实际上我的头文件已经是添加好的了。所以没点眼力见压根开始找不到出错的原因在哪里

最后,是将代码中的 error != EEXIST  改成了 errno != EEXIST  ,其实就是代码写错了,把错误码写成了错误error。完美,编译成功。成功创建了命名管道 file 文件

总之一句:细节还是细节。

改正后的代码:

#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <errno.h>

//int mkfifo(const char *pathname, mode_t mode);

int main()
{
        if(mkfifo("./file",0600) == -1 && errno != EEXIST){
                printf("mkfifo fail\n");
                perror("why");
        }


        return 0;
}

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐