[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Bug-apl] cast from pointer to smaller type 'int'
From: |
Xiao-Yong Jin |
Subject: |
Re: [Bug-apl] cast from pointer to smaller type 'int' |
Date: |
Wed, 20 Sep 2017 15:37:27 -0500 |
> On Sep 20, 2017, at 3:36 PM, Xiao-Yong Jin <address@hidden> wrote:
>
> reinterpret_cast works from smaller sizes to larger sizes.
>
> So simply
> reinterpret_cast<uint64_t *>(thread)
Sorry, I meant
reinterpret_cast<uint64_t>(thread)
>
> should work for both of our machines (size_t is uint64_t for me).
>
> ... until some pthread implementation decides to hand you a larger sized
> struct for pthread_t.
>
>> On Sep 20, 2017, at 3:26 PM, Juergen Sauermann <address@hidden> wrote:
>>
>> Hi Xiao-Yong,
>>
>> I can compile this:
>>
>> << reinterpret_cast<uint64_t>(
>> reinterpret_cast<void *>(thread))
>>
>> Please let me know if it compiles on you box as well.
>>
>> Best Regards,
>> Jürgen
>>
>>
>> On 09/20/2017 10:00 PM, Juergen Sauermann wrote:
>>> Hi Xiao-Yong,
>>>
>>> with reinterpret_cast<size_t> I am getting (gcc 4.8) this:
>>>
>>> Thread_context.cc: In member function ‘void
>>> Thread_context::print(std::ostream&) const’:
>>> Thread_context.cc:73:42: error: invalid cast from type ‘pthread_t {aka long
>>> unsigned int}’ to type ‘size_t {aka unsigned int}’
>>> << reinterpret_cast<size_t>(thread)
>>> ^
>>> make[1]: *** [apl-Thread_context.o] Error 1
>>>
>>> It seems a little ridiculous to me that replacing a good old C-style cast
>>> that worked fine for the
>>> last 10 years cannot be replaced by one of the 3 members of the C++ zoo of
>>> casts in a portable way?
>>>
>>> Maybe some intermediate cast to const void * can be done on your machine?
>>>
>>> Best Regards,
>>> Jürgen
>>>
>>>
>>> On 09/19/2017 11:44 PM, Xiao-Yong Jin wrote:
>>>> Should have got back to you sooner, but static_cast is not allowed between
>>>> pointer types and non-pointer types.
>>>>
>>>> Thread_context.cc:73:11: error: static_cast from 'pthread_t' (aka
>>>> '_opaque_pthread_t *') to 'int' is not allowed
>>>> << static_cast<int>(thread)
>>>> ^~~~~~~~~~~~~~~~~~~~~~~~
>>>>
>>>> I need reinterpret_cast<size_t> here. I cannot reinterpret_cast<int>
>>>> either, because of the difference in size.
>>>>
>>>>
>>>>> On Sep 11, 2017, at 3:01 PM, Juergen Sauermann <address@hidden>
>>>>> wrote:
>>>>>
>>>>> Hi Xiao-Yong,
>>>>>
>>>>> I see. In this particular case the pthread_t is only used to identify a
>>>>> thread and
>>>>> to distinguish it from other threads for debugging purposes. So as long
>>>>> as the
>>>>> compiler does not complain about the cast everything is fine. Cast to
>>>>> void * instead of
>>>>> int would also be an option.
>>>>>
>>>>> /// Jürgen
>>>>>
>>>>>
>>>>> On 09/11/2017 08:38 PM, Xiao-Yong Jin wrote:
>>>>>
>>>>>> I don't think there is a portable way of printing a variable of type
>>>>>> pthread_t. It could be a struct, depending on the implementation.
>>>>>> static_cast<int> is alright, but may not be useful in the future.
>>>>>>
>>>>>>
>>>>>>
>>>>>>> On Sep 11, 2017, at 1:08 PM, Juergen Sauermann <address@hidden>
>>>>>>>
>>>>>>> wrote:
>>>>>>>
>>>>>>> Hi Xiao-Yong,
>>>>>>>
>>>>>>> thanks, maybe fixed in SVN 1011.
>>>>>>> Problem with that error is that the casted type is not a pointer, at
>>>>>>> least on my machine.
>>>>>>>
>>>>>>> /// Jürgen
>>>>>>>
>>>>>>>
>>>>>>> On 09/11/2017 06:55 PM, Xiao-Yong Jin wrote:
>>>>>>>
>>>>>>>
>>>>>>>> At revision 1010
>>>>>>>>
>>>>>>>> Thread_context.cc:72:65: error: cast from pointer to smaller type
>>>>>>>> 'int' loses information
>>>>>>>> out << "thread #" << setw(2) << N << ":" << setw(16) <<
>>>>>>>> int(thread)
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>
>
- [Bug-apl] cast from pointer to smaller type 'int', Xiao-Yong Jin, 2017/09/11
- Re: [Bug-apl] cast from pointer to smaller type 'int', Juergen Sauermann, 2017/09/11
- Re: [Bug-apl] cast from pointer to smaller type 'int', Xiao-Yong Jin, 2017/09/11
- Re: [Bug-apl] cast from pointer to smaller type 'int', Juergen Sauermann, 2017/09/11
- Re: [Bug-apl] cast from pointer to smaller type 'int', Xiao-Yong Jin, 2017/09/19
- Re: [Bug-apl] cast from pointer to smaller type 'int', Juergen Sauermann, 2017/09/20
- Re: [Bug-apl] cast from pointer to smaller type 'int', Juergen Sauermann, 2017/09/20
- Re: [Bug-apl] cast from pointer to smaller type 'int', Xiao-Yong Jin, 2017/09/20
- Re: [Bug-apl] cast from pointer to smaller type 'int',
Xiao-Yong Jin <=
- Re: [Bug-apl] cast from pointer to smaller type 'int', Juergen Sauermann, 2017/09/21
- Re: [Bug-apl] cast from pointer to smaller type 'int', Xiao-Yong Jin, 2017/09/20
- Re: [Bug-apl] cast from pointer to smaller type 'int', Juergen Sauermann, 2017/09/20