
On 12 April 2011 16:46, Phil Bouchard <philippe@fornux.com> wrote:
On 4/12/2011 10:15 AM, Nevin Liber wrote:
Only if it is implemented the way Steven described it. You cannot legally compare pointers using relationship operators (<,<=,>,>=) unless at least one is NULL, they are both pointing within the same object, or both pointing within the same array (or just past the end of the array). All other comparisons are undefined behavior. See 6.5.8 of the C99 standard for a much more precise definition.
I understand but a memory page is in general aligned and therefore the pointer difference (ptrdiff) of the beginning of the page with the location of the object can be valid. In other words the memory page can be an array of type T.
I'm not saying that it won't accidentally work, but once you have undefined behavior, the compiler is free to do anything it wants. And once you are talking about pages of memory, you are (IMHO) outside of the realm of what can be standardized within the language, since you are now OS and/or hardware specific. I'd still like to see a small example showing the usefulness of such a feature. -- Nevin ":-)" Liber <mailto:nevin@eviloverlord.com> (847) 691-1404