> On Mar 27, 2014, at 6:44 PM, Charles Mills <[email protected]> wrote:
> 
> I have no idea how a particular C compiler would behave but I think the
> problem is that any time you do anything resembling
> 
> void *foo;
> int bar = (int)foo;
> 
> then what you get is what you get. We all know that a 32-bit address and a
> 32-bit integer are the same thing to the z architecture, but to the C
> compiler they are distinct, and the conversion from one to the other is
> whatever the C compiler makes it.
> 
> My Kernighan & Ritchie says (A6.6) "a pointer may be converted to an
> integral type ... the mapping function is ... implementation dependent."
> 
> -----------------------------------------
> 
> I wonder, what if the OP reversed the casting and instead coded 
> 
> if ( ptr == (void *)0xff000000 ) ...
> 
> Is that legal? (Can you cast a constant to a void* ? My MS VS C++ just let
> me do it.) Would that work? 
> 
> Charles
> 
> -----Original Message-----
> From: IBM Mainframe Discussion List [mailto:[email protected]] On
> Behalf Of David Crayford
> Sent: Thursday, March 27, 2014 3:56 PM
> To: [email protected]
> Subject: Re: Compiler error in z/OS C compiler
> 
> I wonder if C99 intptr_t and uintptr_t would solve the problem. 
> 
> ----------------------------------------------------------------------
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to [email protected] with the message: INFO IBM-MAIN

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to