returning a value from a constructor
    Joel Sherrill <joel@OARcorp.com> 
    joel.sherrill at OARcorp.com
       
    Fri Feb 18 20:47:51 UTC 2005
    
    
  
Steve Holle wrote:
> We ran into an interesting problem today.  We tried to call the 
> following rtems_libio functions from a c++ constructor :
> 
>       rtems_libio_check_fd( fd );
>       iop = rtems_libio_iop( fd );
>       rtems_libio_check_is_open(iop);
> 
> The first and third generated the following errors :
> 
> /tcb2/rlc/source/char_available.c:55: returning a value from a constructor
> /tcb2/rlc/source/char_available.c:57: returning a value from a constructor
> 
> This baffled us for a time until we realized that these two functions 
> were actually macros that contained returns for failure.  We solved the 
> problem by calling a subroutine that called the two functions.  If the 
> two functions were actually subroutines instead of macros the code would 
> have compiled.
This took me a second to figure out what was going on.
They are actually in libio_.h which is intended to be helper macros for 
the implementation of the section 2 system calls.  Are you getting 
visibility of this macro through an intentionally public .h file?
Or are you directly including libio_.h?
> I know this would be a huge job and probably not worth the time but it 
> would be helpful if it was easy to tell macros from subroutines.  One 
> method I've seen in the past is that all macros are capitalized.
That is one way.
> Just wanted to get this into the archive in case someone else runs into 
> this problem.
> 
> Steve Holle
> Link Communications, Inc.
> 1035 Cerise Rd.
> Billings, MT  59101
> sholle at link-comm.com 
-- 
Joel Sherrill, Ph.D.             Director of Research & Development
joel at OARcorp.com                 On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
    Support Available             (256) 722-9985
    
    
More information about the users
mailing list