[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

returning a value from a constructor



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.

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.

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@link-comm.com