gpt4 book ai didi

C 警告 : implicit declaration of function ‘fchmod’

转载 作者:太空狗 更新时间:2023-10-29 16:04:04 24 4
gpt4 key购买 nike

我有一个使用 fchmod 的函数 createFile:

int createFile(char *pFileName) {
int ret;

if ((ret = open(pFileName, O_RDWR | O_CREAT | O_TRUNC)) < 0)
errorAndQuit(2);

fchmod(ret, S_IRUSR | S_IWUSR);
return ret;
}

在我的文件顶部,我有以下内容:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>

编译时:编译器吐出:

warning: implicit declaration of function ‘fchmod’

我包含了所有正确的文件,但收到此警告。该程序运行良好,即使有警告。

最佳答案

巧合的是,feature_test_macros(7) 联机帮助页直接回答了您的问题:

Specification of feature test macro requirements in manual pages
When a function requires that a feature test macro is
defined, the manual page SYNOPSIS typically includes a note
of the following form (this example from the chmod(2) manual
page):

#include <sys/stat.h>

int chmod(const char *path, mode_t mode);
int fchmod(int fd, mode_t mode);

Feature Test Macro Requirements for glibc (see
feature_test_macros(7)):

fchmod(): _BSD_SOURCE || _XOPEN_SOURCE >= 500

The || means that in order to obtain the declaration of
fchmod(2) from <sys/stat.h>, either of the following macro
definitions must be made before including any header files:

#define _BSD_SOURCE
#define _XOPEN_SOURCE 500 /* or any value > 500 */

Alternatively, equivalent definitions can be included in the
compilation command:

cc -D_BSD_SOURCE
cc -D_XOPEN_SOURCE=500 # Or any value > 500

关于C 警告 : implicit declaration of function ‘fchmod’ ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5918539/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com