程序在 C 中的库 fcntl.h 中找不到常量



我正在学习C,不知何故我的程序找不到库中定义的常量。在我的理解中S_IRUSR|S_IWUSR应该在 fcntl.h 中定义,但我在尝试编译此错误时得到: ...错误:"S_IRUSR"未声明(首次在此函数中使用) ...错误:"S_IWUSR"未声明(首次在此函数中使用)

我的程序看起来像这样:

#include <stdio.h> 
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
int main(int argc, char *argv[]){
int filedeskriptor;
char SchreibeTxt [100] = "Hallo getMonth", LeseTxt [100];
filedeskriptor = open("getMonthTxt", O_RDWR|O_CREAT, S_IRUSR|S_IWUSR);
if (filedeskriptor == -1){
printf("Fehler beim Öffnen von mydat n");
exit (EXIT_FAILURE);
}
if (write(filedeskriptor, SchreibeTxt, sizeof(SchreibeTxt)) == -1){
printf("Fehler beim Schreiben in mydat n");
exit (EXIT_FAILURE);
}
printf("In getMonthTxt geschrieben: %s n", SchreibeTxt);
close(filedeskriptor);
return EXIT_SUCCESS;
}

有什么帮助吗?

谢谢

这取决于您的编译器和实现的POSIX版本,因为正如Ian Abbott在评论中所说,S_IRUSRS_IWUSR仅在POSIX.1-2008的fcntl.h内提供。

如果编译器使用前面的 POSIX 版本,则宏S_IRUSRS_IWUSR不会在fcntl.h中定义,如下所示。然后在标头sys/stat.h中定义它们。

这是指向有关标题sys/stat.h内容的说明的链接,您可以在其中找到这些内容:

https://pubs.opengroup.org/onlinepubs/007908799/xsh/sysstat.h.html


因此,如果您的编译器使用早于 POSIX.1-2008 的版本,请在代码顶部添加#include <sys/stat.h>,否则,如果您不需要任何内容,fcntl.h请将其替换为该版本。

也许你缺少标题

man 2 打开状态 3 打开() 的标头

相关内容

  • 没有找到相关文章

最新更新