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