C语言 O_DIRECT undeclared, Eclipse CDT, Ubuntu 20.04



我遇到O_DIRECT问题。我正试图将它与open()一起使用,但我遇到了一个错误,如:

error: O_DIRECT undeclared (first use in this function)

我包括<fcntl.h>

我为O_DIRECT创建了/usr/include/目录,它存在于x86_64-linux-gnu/bits/fcntl-linux.h中。我试图包含这个文件,但后来我得到了这个错误:

error: #error Never use <x86_64-linux-gnu/bits/fcntl-linux.h> directly; include <fcntl.h> instead.

我正在新安装的Ubuntu 20.04系统上的Eclipse CDT项目中尝试所有这些。

在包含<fcntl.h>或将-D_GNU_SOURCE添加到编译器命令之前,应定义_GNU_SOURCE

请注意,这会降低程序的可移植性。

它存在于x86_64-linux-gnu/bits/fcntl linux.h中。我试图包含这个文件,但后来我得到了这个错误

正如错误所说,您不应该直接包含bits标头。

O_DIRECT是一个Linux扩展(即不在POSIX中(。你需要定义_GNU_SOURCE才能得到它。你可以在源文件的顶部定义它,比如:

#define _GNU_SOURCE

或在使用CCD_ 12编译时定义。例如

gcc -D_GNU_SOURCE file.c

你可能对"What dos"感兴趣#define _GNU_SOURCE";意味着也

相关内容

  • 没有找到相关文章

最新更新