错误:FALLOC_FL_KEEP_SIZE 未声明(在此函数中首次使用)

问题描述 投票:0回答:1

根据手册页,我在包含

_GNU_SOURCE
之前定义了
<fcntl.h>

#include <stdio.h>

#define _GNU_SOURCE    /* For Linux's fallocate(). */
#define HAVE_FALLOCATE 1

#include <fcntl.h>

int main(void)
{
    printf("%d\n", FALLOC_FL_KEEP_SIZE);
}

我编译的:

gcc-13 -std=gnu2x c.c

但这失败了:

error: `FALLOC_FL_KEEP_SIZE` undeclared (first use in this function)

有关环境的一些统计数据:

OS: Linux Mint 21.2 x86_64
Kernel: 5.15.0-112-generic
GLIBC Version: GNU C Library (Ubuntu GLIBC 2.35-0ubuntu3.8) stable release 2.35
Compiler: gcc version 13.1.0 (Ubuntu 13.1.0-8ubuntu1~22.04)

运行

grep -r FALLOC_FL_KEEP_SIZE /usr/include
返回:

/usr/include/linux/falloc.h:#define FALLOC_FL_KEEP_SIZE 0x01 /* default is extend size */
/usr/include/linux/falloc.h: * with fallocate. Flag FALLOC_FL_KEEP_SIZE should cause the inode
c linux system-calls glibc fallocate
1个回答
0
投票

运行 grep -r FALLOC_FL_KEEP_SIZE /usr/include 返回:

您假设

/usr/include/linux/falloc.h
#included
进入您的程序;不是的。

您可以通过以下方式验证:

gcc -E c.c | grep falloc

您可以通过添加实际的包含来解决此问题:

#include <linux/falloc.h>

© www.soinside.com 2019 - 2024. All rights reserved.