Opened 14 years ago

Closed 14 years ago

#2264 closed Bugs (fixed)

Warning C4244 in VS2005 build for PocketPC

Reported by: Juraj Novák <beeblbrox@…> Owned by: Daniel James
Milestone: Boost 1.37.0 Component: hash
Version: Boost 1.36.0 Severity: Cosmetic
Keywords: Cc:

Description

I am getting these two warnings:

1>include\boost/functional/detail/float_functions.hpp(91) : warning C4244: 'return' : conversion from 'double' to 'float', possible loss of data 1>include\boost/functional/detail/float_functions.hpp(118) : warning C4244: 'return' : conversion from 'double' to 'float', possible loss of data

They can be easily fixed with an explicit cast to float. These warnings occur in functions call_ldexp and call_frexp in part conditioned with BOOST_HASH_C99_NO_FLOAT_FUNCS and BOOST_HASH_USE_OVERLOAD_FLOAT_FUNCS.

Attachments (2)

output1.txt (283 bytes ) - added by Juraj Novák <beeblbrox@…> 14 years ago.
Output from test_float1.cpp
output2.txt (295 bytes ) - added by Juraj Novák <beeblbrox@…> 14 years ago.
Output from test_float2.cpp

Download all attachments as: .zip

Change History (10)

comment:1 by Daniel James, 14 years ago

Status: newassigned

An explicit cast wouldn't be a good idea because it can hide potential problems. If that's the only solution, then I'd want to use a macro to only enable it when it's needed.

Please can you run the programs attached to the mail at http://lists.boost.org/Archives/boost/2005/04/83834.php, and attach the output to this ticket. And the output from libs/config/test/config_info.cpp in boost would also be helpful. That should at least give me an idea of the situation. Thanks.

by Juraj Novák <beeblbrox@…>, 14 years ago

Attachment: output1.txt added

Output from test_float1.cpp

by Juraj Novák <beeblbrox@…>, 14 years ago

Attachment: output2.txt added

Output from test_float2.cpp

comment:2 by Juraj Novák <beeblbrox@…>, 14 years ago

It seems the platform does support float versions of math functions. I didn't run config_info.cpp, because my platform is a standard VS2005/PocketPC2003 project running on WM5.

comment:3 by Daniel James, 14 years ago

I wanted to see the output of config_info so that I could see what macros the platform sets as I don't have access to it myself. But it seems that the best thing to do is always use the c99 functions for the Dinkumware libraries so I'll change it to do that.

comment:4 by Daniel James, 14 years ago

(In [48529]) Always use c99 float function overloads on Dinkumware, as it doesn't always have the C++ overloads. Refs #2264.

comment:5 by Daniel James, 14 years ago

(In [48674]) Reinstate the old choice of float functions on Dinkumware for all compilers other than Visual C++.

It turns out that Borland uses Dinkumware but doesn't have the C99 float overloads, so it only seems realistic to assume their existence on Visual C++. Refs #2264.

comment:6 by Daniel James, 14 years ago

Okay, I think the current trunk gets it right, can you test it? If it works for you, I'll merge into release and close this ticket.

comment:7 by Juraj Novák <beeblbrox@…>, 14 years ago

The code compiles without warning now. I think it is OK.

comment:8 by Daniel James, 14 years ago

Resolution: fixed
Status: assignedclosed

(In [48739]) Always use c99 float function overloads when using Dinkumware with Visual C++, as it doesn't always have the C++ overloads. Fixes #2264.

Merged revisions 48529,48674 via svnmerge from https://svn.boost.org/svn/boost/trunk

........

r48529 | danieljames | 2008-09-02 11:31:26 +0100 (Tue, 02 Sep 2008) | 1 line

Always use c99 float function overloads on Dinkumware, as it doesn't always have the C++ overloads. Refs #2264.

........

r48674 | danieljames | 2008-09-08 22:06:16 +0100 (Mon, 08 Sep 2008) | 7 lines

Reinstate the old choice of float functions on Dinkumware for all compilers other than Visual C++.

It turns out that Borland uses Dinkumware but doesn't have the C99 float overloads, so it only seems realistic to assume their existence on Visual C++. Refs #2264.

........

Note: See TracTickets for help on using tickets.