Modify

Opened 6 years ago

Closed 5 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 6 years ago.
patch to adjust mpl.hpp

Download all attachments as: .zip

Change History (4)

comment:1 Changed 6 years ago by Ulrich Eckhardt <ulrich.eckhardt@…>

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 Changed 6 years ago by David Deakins

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.

Changed 6 years ago by David Deakins

patch to adjust mpl.hpp

comment:3 Changed 5 years ago by Ion Gaztañaga

Resolution: fixed
Status: newclosed

Fixed at revision 78474 in trunk

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The owner will remain Ion Gaztañaga.
The resolution will be deleted.

Add Comment


E-mail address and name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.