错误:未在此范围内声明'fileno'

XNo*_*ize 1 c++ makefile c++11

我在Windows 8上运行Cygwin,试图编译我想要mod的游戏的源代码.不幸的是,我在构建涉及fileno函数时遇到了一些错误.做了一些谷歌搜索似乎问题可能与c ++ 11支持有关(我不确定这意味着什么).人们发现的大多数解决方案都涉及在编译时添加一些选项,如-std = c ++ 0x或-std = c ++ 11,但是我尝试将选项添加到makefile中是不成功的,我不知道如果那是什么导致问题无论如何.我将包含抛出错误的代码片段和makefile的链接,因为它非常大.你能给我的任何建议都会很棒.

抛出错误的代码:

    time_t file_modtime(FILE *f)
    {
        struct stat filestat;
        if (fstat(fileno(f), &filestat))
            return 0;

        return filestat.st_mtime;
    }
Run Code Online (Sandbox Code Playgroud)

链接到Makefile

它正在github上托管

编辑:在得到一些建议后,我在makefile周围找到并找到了五个使用-std选项的实例,玩它们并没有改变任何东西.我的Cygwin配置有问题吗?我在我正在构建的游戏的安装指南中安装了我被告知需要的软件包.

deW*_*eW1 10

更改-std=c***makefile以-std=gnu++0x解决问题.

如果你不知道什么c++11是你最有可能不使用它.

此外,如果您需要c++11支持,您也可以:-std=gnu++11而不是-std=gnu++0x