Re: Struggling with API QDFRTVFD

Barbara Morris <[email protected]>
Newsgroups gmane.comp.lang.as400.c
Message-ID <[email protected]>
On 2014-08-19 09:10, Frank Kolmann wrote:
>   also I must admit I dont really know what this code means
>   p_QDFFINFO = (QDFFINFO_t *)((char *) p_QDFFBASE + p_QDFFBASE->WDFFINOF);
>   I know it sets a pointer to the data but what does
>           (QDFFINFO_t *)((char *)  mean ?
>

p_QDFFBASE + p_QDFFBASE->WDFFINOF
says to add the offset p_QDFFBASE->WDFFINOF to the pointer p_QDFFBASE. 
In C, when you add an offset, say 5, to a pointer, it doesn't add 5 
bytes to the pointer, it adds 5 multiples of the type of the pointer. So 
if p_QDFFBASE is a pointer to a structure of length 32, adding 5 to the 
pointer would actually add 5*32 bytes.

(char *) p_QDFFBASE

means to interpret p_QDFFBASE as a pointer to char, no matter what type 
p_QDFFBASE actually is. This forces the addition of the offset to be in 
bytes.

(QDFFINFO_t *) casts the resulting pointer to be a pointer to a 
QDFFINFO_t structure, which allows it to be assigned to p_QDFFINFO.

So the whole thing means to take the p_QDFFBASE pointer, add 
p_QDFFBASE->WDFFINOF bytes to it, and assign it to p_QDFFINFO.

-- 
Barbara

-- 
This is the Bare Metal Programming IBM i (AS/400 and iSeries) (C400-L) mailing list
To post a message email: C400-L-Zwy7GipZuJhWk0Htik3J/[email protected]
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/c400-l
or email: C400-L-request-Zwy7GipZuJhWk0Htik3J/[email protected]
Before posting, please take a moment to review the archives
at http://archive.midrange.com/c400-l.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.