程序在 c 中的库 fcntl.h 中找不到常量
programm can not find constant in libary fcntl.h in c
我正在学习 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-version 构建的,因为 S_IRUSR
和 S_IWUSR
仅在 fcntl.h
内部提供 POSIX.1-2008 正如 Ian Abbott 在评论中所说。
如果您的编译器使用前面的 POSIX-version,宏 S_IRUSR
和 S_IWUSR
未在 fcntl.h
中定义,如您所见 here。然后在 header sys/stat.h
.
中定义它们
这里是 link 对 header sys/stat.h
内容的描述,在那里你可以找到那些:
https://pubs.opengroup.org/onlinepubs/007908799/xsh/sysstat.h.html
因此,如果您的编译器使用早于 POSIX.1-2008 的版本,请在代码顶部添加 #include <sys/stat.h>
,否则如果您不需要 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-version 构建的,因为 S_IRUSR
和 S_IWUSR
仅在 fcntl.h
内部提供 POSIX.1-2008 正如 Ian Abbott 在评论中所说。
如果您的编译器使用前面的 POSIX-version,宏 S_IRUSR
和 S_IWUSR
未在 fcntl.h
中定义,如您所见 here。然后在 header sys/stat.h
.
这里是 link 对 header sys/stat.h
内容的描述,在那里你可以找到那些:
https://pubs.opengroup.org/onlinepubs/007908799/xsh/sysstat.h.html
因此,如果您的编译器使用早于 POSIX.1-2008 的版本,请在代码顶部添加 #include <sys/stat.h>
,否则如果您不需要 fcntl.h
中的任何内容换成那个。