[Mingw-users] gcc 8.2.0: missing _fileno() for c++11

Eli Zaretskii eliz****@gnu*****
Tue Jan 21 04:36:44 JST 2020


> Date: Mon, 20 Jan 2020 22:26:21 +0300
> From: Anton Shepelev <anton****@gmail*****>
> 
> > int main( void )
> > {  FILE *f;
> >    _fileno( f );
> >    return 0;
> > }
> >
> > saved in test.cpp, will not compile with:
> >
> >     gcc -std=c++11 test.cpp
> 
> Here is the full gcc output when building as C++11:
> 
> test.cpp: In function 'int main()':
> test.cpp:5:4: error: '_fileno' was not declared in this scope
>     _fileno( f );
>     ^~~~~~~
> test.cpp:5:4: note: suggested alternative: '_filbuf'
>     _fileno( f );
>     ^~~~~~~
>     _filbuf
> 
> According to:
>   https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/fileno
> _fileno() shall be declared in stdio.h .

Doesn't -std=c++11 request strict ANSI C++?  _fileno is non-ANSI, and
thus isn't visible in a strict-ANSI compilation.  I suggest to try the
option -std=gnu++11 instead.



More information about the MinGW-Users mailing list