id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 4816,[BOOST::ASIO] Under Cygwin doesn't compile,frederic.jardon@…,chris_kohlhoff,"Environment: Cygwin Compiler: gcc == 1st issue boost/asio.hpp includes another header making references to the 'pipe_select_interrupter' but fails to include: boost/asio/detail/pipe_select_interrupter.hpp Where it is effectively defined == 2nd issue The C function 'cfgetospeed' is referenced by: boost/asio/impl/serial_port_base.ipp But the inclusion of is not done under Cygwin and more, the cfgetospeed function is a macro, hence the statement on line 135 fails: {{{ speed_t baud = ::cfgetospeed(&storage); }}} == 3rd issue boost/asio/detail/buffer_sequence_adapter.hpp Makes references to the WSABUF structure when under Cygwin, but this structure exists only under the WIN32 environment. To compile I have to undefine the {{{__CYGWIN__}}} macro before including this header. == How to reproduce The following program doesn't compile: {{{ /// gcc -c bug.cpp doesn't compile #include #include #include #include int main(int argc, char* argv[]) { return 0; } }}} === User fix I fix these issue in my programs by adding the following code BEFORE including {{{ /// 1st issue #include /// 2nd issue #ifdef __CYGWIN__ #include #ifdef cfgetospeed #define __cfgetospeed__impl(tp) cfgetospeed(tp) #undef cfgetospeed inline speed_t cfgetospeed(const struct termios *tp) { return __cfgetospeed__impl(tp); } #undef __cfgetospeed__impl #endif /// cfgetospeed is a macro /// 3rd issue #undef __CYGWIN__ #include #define __CYGWIN__ #endif }}}",Bugs,new,To Be Determined,asio,Boost 1.43.0,Problem,,boost::asio pipe_select_interrupter,