[Insight-developers] Warning - possible candidate for noreturn attribute

Karthik Krishnan karthik.krishnan at kitware.com
Mon Mar 19 15:03:18 EST 2007


Here's the macro boost defines for noreturn functions:

https://boost-consulting.com:8443/trac/soc/browser/boost/soc/2006/coroutine/trunk/boost/coroutine/detail/noreturn.hpp?rev=1087

#if defined(__GNUC__)
#define BOOST_COROUTINE_NORETURN(function) \
    function __attribute__((__noreturn__)) \
#elif defined (BOOST_MSVC)
#define BOOST_COROUTINE_NORETURN(function) \
    __declspec(noreturn) function          \
#else
//just for testing, remove the following error.
#error no default
#define BOOST_COROUTINE_NORETURN(function) \
    function
#endif

used as BOOST_COROUTINE_NORETURN( void foo() )
{
  //body of foo
}

BTW __attribute__((noreturn)) seems to be supported on gnuc compilers since
2.4 ..

--
karthik

On 3/19/07, Bill Lorensen <bill.lorensen at gmail.com> wrote:
>
> Mathieu,
>
> Is there a compiler flag to suppress that warning?
>
> Bill
>
>
> On 3/19/07, Mathieu Coursolle <mcoursolle at rogue-research.com> wrote:
> >
> > Hi,
> >
> > I currently use ITK in a XCode project on Mac OSX.
> > When I include some ITK headers, I get the following
> > warning:
> >
> > /Common/itkImageSource.txx: In member function 'void
> > itk::ImageSource<TOutputImage>::ThreadedGenerateData(const typename
> > TOutputImage::RegionType&, int) [with TOutputImage = ITK2DImage]':
> > /Common/itkImageSource.txx:244: warning: function might be possible
> > candidate for attribute 'noreturn'
> >
> > This is cause by the fact that the implementation of
> > ThreadedGenerateData
> > from itkImageSource (base class) just throws an exception, so it does
> > not return.
> >
> >
> > //----------------------------------------------------------------------------
> > // The execute method created by the subclass.
> > template <class TOutputImage>
> > void
> > ImageSource<TOutputImage>
> > ::ThreadedGenerateData(const OutputImageRegionType&,
> >                       int)
> > {
> > itkExceptionMacro("subclass should override this method!!!");
> > }
> >
> > I can remove that warning by changing the function prototype to use the
> > noreturn
> > attribute:
> >
> > virtual
> > void ThreadedGenerateData(const OutputImageRegionType&
> > outputRegionForThread,
> >                            int threadId )
> > __attribute__ ((noreturn));
> >
> > However, I believe that the noreturn attribute is not defined on all
> > compilers.
> >
> > Any suggestion to get rid of that warning?
> >
> > Thank you.
> >
> > Mathieu
> >
> > --
> > ____________________________________________________________
> > Mathieu Coursolle                   mcoursolle at rogue-research.com
> > Rogue Research                      www.rogue-research.com
> > Montréal, Québec, Canada
> >
> > _______________________________________________
> > Insight-developers mailing list
> > Insight-developers at itk.org
> > http://www.itk.org/mailman/listinfo/insight-developers
> >
>
>
> _______________________________________________
> Insight-developers mailing list
> Insight-developers at itk.org
> http://www.itk.org/mailman/listinfo/insight-developers
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.itk.org/mailman/private/insight-developers/attachments/20070319/96bb42ba/attachment.html


More information about the Insight-developers mailing list