O_DIRECT 未在 Arch 上定义 LInux
O_DIRECT not defined on Arch LInux
我正在尝试编写一些低延迟磁盘访问代码。问题是我正在使用的库具有以下代码:
#ifdef O_DIRECT
int flags = O_DIRECT;
#else
int flags = 0;
#endif
并且我的安装没有定义 O_DIRECT
。
我已经通过这个简单的程序证实了这一点:
#include <stdio.h>
int main(void){
#ifdef O_DIRECT
printf("O_DIRECT");
#else
printf("Otherwise");
#endif
}
打印 Otherwise
.
所以问题是为什么这个没有定义?还有如何解决这个问题?
宏其实是defined in<fcntl.h>
,不是stdio.h.
其次,要访问定义,您需要 #define _GNU_SOURCE
原样 Linux-specific。请注意,定义必须在 any libc header 包含之前,而不仅仅是在 fcntl.h.
之前
我正在尝试编写一些低延迟磁盘访问代码。问题是我正在使用的库具有以下代码:
#ifdef O_DIRECT
int flags = O_DIRECT;
#else
int flags = 0;
#endif
并且我的安装没有定义 O_DIRECT
。
我已经通过这个简单的程序证实了这一点:
#include <stdio.h>
int main(void){
#ifdef O_DIRECT
printf("O_DIRECT");
#else
printf("Otherwise");
#endif
}
打印 Otherwise
.
所以问题是为什么这个没有定义?还有如何解决这个问题?
宏其实是defined in<fcntl.h>
,不是stdio.h.
其次,要访问定义,您需要 #define _GNU_SOURCE
原样 Linux-specific。请注意,定义必须在 any libc header 包含之前,而不仅仅是在 fcntl.h.