如标题所示,当我尝试在Linux而不是Mac上进行编译时,出现以下错误:“函数'fileno'的隐式声明”。我知道我可以用简单的int fileno(FILE *stream);
行修复它,但是我想知道为什么会这样。
最佳答案
您不应声明系统库提供的功能。您应该适当地包含适当的标题。
由于fileno
不是标准的C函数,因此通常不在<stdio.h>
中声明。您必须定义一个合适的宏才能启用声明。
man fileno
glibc的要求(请参见feature_test_macros(7)):
fileno():_ POSIX_C_SOURCE> = 1 || _XOPEN_SOURCE || _POSIX_SOURCE
在包含三个宏之前定义其中三个宏应该可以解决问题。
关于c - 当我尝试在Linux而不是Mac上进行编译时,为什么会出现“错误:函数'fileno'的隐式声明”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44622827/