Opened 10 years ago

Closed 10 years ago

#6841 closed Bugs (fixed)

Are __cdecl and __stdcall ambiguous in CE?

Reported by: viboes Owned by: Ion Gaztañaga
Milestone: To Be Determined Component: intrusive
Version: Boost 1.49.0 Severity: Problem
Keywords: wince Cc:

Description

It seems that cdecl and stdcall are the same in this platform.

Test output: VeecoFTC - thread - container__thread_vector_p_lib / msvc-9.0~wm5~stlport5.2
Rev 78187 / Wed, 25 Apr 2012 04:24:15 +0000
Report Time: Fri, 27 Apr 2012 20:28:57 +0000

Compile [2012-04-26 12:54:33 UTC]: fail

    call "%BOOST_ROOT%/TestTools/VSVars32-VC9-WM5.bat" x86 >nul
cl /Zm800 -nologo @"D:\BoostRT\results\boost\bin.v2\libs\thread\test\container__thread_vector_p_lib.test\msvc-9.0~wm5~stlport5.2\debug\stdlib-stlport-5.2~evc9~arm\threads\container\thread_vector_pass.obj.rsp" 

thread_vector_pass.cpp
C:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SDK\include\ARMV4I\winnt.h(384) : warning C4201: nonstandard extension used : nameless struct/union
C:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SDK\include\ARMV4I\winnt.h(403) : warning C4201: nonstandard extension used : nameless struct/union
C:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SDK\include\ARMV4I\winnt.h(6041) : warning C4201: nonstandard extension used : nameless struct/union
C:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SDK\include\ARMV4I\winnt.h(6050) : warning C4201: nonstandard extension used : nameless struct/union
C:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SDK\include\ARMV4I\winbase.h(1139) : warning C4201: nonstandard extension used : nameless struct/union
D:\BoostRT\boost\boost/thread/win32/thread_primitives.hpp(389) : warning C4127: conditional expression is constant
D:\BoostRT\boost\boost/thread/win32/thread_primitives.hpp(406) : warning C4127: conditional expression is constant
D:\BoostRT\boost\boost/intrusive/detail/mpl.hpp(165) : error C2953: 'boost::intrusive::detail::is_unary_or_binary_function_impl<R(__cdecl *)(void)>' : class template has already been defined
        D:\BoostRT\boost\boost/intrusive/detail/mpl.hpp(157) : see declaration of 'boost::intrusive::detail::is_unary_or_binary_function_impl<R(__cdecl *)(void)>'
D:\BoostRT\boost\boost/intrusive/detail/mpl.hpp(197) : error C2953: 'boost::intrusive::detail::is_unary_or_binary_function_impl<R(__cdecl *)(T0)>' : class template has already been defined
        D:\BoostRT\boost\boost/intrusive/detail/mpl.hpp(189) : see declaration of 'boost::intrusive::detail::is_unary_or_binary_function_impl<R(__cdecl *)(T0)>'
D:\BoostRT\boost\boost/intrusive/detail/mpl.hpp(229) : error C2953: 'boost::intrusive::detail::is_unary_or_binary_function_impl<R(__cdecl *)(T0,T1)>' : class template has already been defined
        D:\BoostRT\boost\boost/intrusive/detail/mpl.hpp(221) : see declaration of 'boost::intrusive::detail::is_unary_or_binary_function_impl<R(__cdecl *)(T0,T1)>'

Attachments (1)

boost-intrusive-mpl.hpp.patch (437 bytes ) - added by David Deakins 10 years ago.
patch to adjust mpl.hpp

Download all attachments as: .zip

Change History (4)

comment:1 by Ulrich Eckhardt <ulrich.eckhardt@…>, 10 years ago

Keywords: wince added

If you peek around the Windows CE headers, you will find that one is #defined to the other. I remember that you can use those before the according headers are included, which can mess things up if you have code like this (from the top of my head, not actually compiled):

    int __cdecl foo();
    #include <windows.h>
    int __cdecl foo()
    { return 42; }

BTW: I see that you are currently trying to take care of the CE port. If you add the "wince" keyword, all those tickets are easier to find. I also need a CE port, but I'm currently swamped with other work, so at best I can watch what's going on and try to help out.

comment:2 by David Deakins, 10 years ago

I actually had a little bit of time to look at this and built the attached simple patch for mpl.hpp. After applying it, nearly all of the intrusive tests seem pass without issue on WinCE.

by David Deakins, 10 years ago

patch to adjust mpl.hpp

comment:3 by Ion Gaztañaga, 10 years ago

Resolution: fixed
Status: newclosed

Fixed at revision 78474 in trunk

Note: See TracTickets for help on using tickets.