Re: Question about INT_PTR and int
On 3 nov, 17:10, Joseph M. Newcomer <newco...@flounder.com> wrote:
This is one of the fundamental defects in how Microsoft has done INT_PTR.=
They have
functions (like GetCount()) that return INT_PTR, and APIs that still want=
int. So you end
up having to cast at some point to get the values to pass the compiler ty=
pe checking.
for(int i = 0; i < (int)myArray.GetCount(); i++)
would probably be best. Besides, if you have more that 4.2 billion ite=
ms in your list
control, it's going to take tens of minutes to load it, so I would not be=
overly concerned
with the reality of the overflow. It remains a serious problem, howeve=
r, in the general
case.
joe
On Mon, 3 Nov 2008 02:00:18 -0800 (PST), Mikel <mikel.l...@gmail.com> wro=
te:
Hi,
I have a little question regarding INT_PTR and int.
I want to show the contents of a CArray in a CListCtrl so I've done
something like:
for (INT_PTR i = 0; i < myArray.GetCount(); i++)
{
c_List.InsertItem(i, [...]);
[...]
}
The problem is I get a warning C4244 in InsertItem, because InsertItem
takes an int, so I'm converting an INT_PTR to int.
I know I could get rid of the warning by either changing the index
from INT_PTR to int or by doing an explicit cast, but both "solutions"
have their problems.
If I change the index type and at some point INT_PTR is bigger than
int, I could get and infinite loop (well, actually, the index would
wrap and become <0, so when accessing the array I would get an assert
or something).
And if I do an explicit cast, I would be in the same situation as I am
now, but without warnings.
Actually, I'm quite sure myArray won't be as big as to really have a
problem with this, and if it were, a CListCtrl would not be a good way
to show its contents. But anyway, I would like to know how to deal
with this kind of "type-mismatch". Any ideas?
Thanks
Mikel
Joseph M. Newcomer [MVP]
email: newco...@flounder.com
Web:http://www.flounder.com
MVP Tips:http://www.flounder.com/mvp_tips.htm- Ocultar texto de la cita -
- Mostrar texto de la cita -
Thanks all for your answers.
Of course, I'm not going to add 2^32 elements to a CListCtrl, it
doesn't make sense. But I wanted to know how to deal with these
situations, in case some time in the future I find a symilar one that
does make sense.
Thanks again