我遇到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";意味着也