O_DIRECT 未声明、Eclipse CDT、Ubuntu 20.04

Rus*_*ken 4 c linux ubuntu eclipse-cdt

我遇到 O_DIRECT 问题。我尝试将它与 一起使用open(),但出现如下错误:

error: O_DIRECT undeclared (first use in this function)
Run Code Online (Sandbox Code Playgroud)

我包括<fcntl.h>

我搜索了/usr/include/目录O_DIRECT,它存在于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.
Run Code Online (Sandbox Code Playgroud)

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

小智 6

_GNU_SOURCE您应该在包含<fcntl.h>或添加之前定义-D_GNU_SOURCE到编译器命令之前进行定义。

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