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.