There are at least 3 ways to tag a structure such that the valid fields allocated for a pointer to the structure at an arbitrary "release level" can be identified at run-time. They all involve adding a field in the structure that contains one of the following forms of identification. 1. a release/version number 2. the allocation size of the structure in bytes 3. a bit-mask specifying attributes present in the structure Pros and cons of each: 1. a release/version number Pro: A release or version number is simple, easy to document, and easy for both users and implementers to understand and reference. Con: A release or version number must be maintained "by hand" and requires other documentation to indicate what should or should not be present in the structure. In particular, the allocation size of the structure must be linked to the release number "by hand". There is no easy way to verify that the code implementing the structure conforms to the release or version number. 2. the allocation size of the structure in bytes Pro: Easy to guarantee correct initialization at compile-time using sizeof(). Con: Requires other documentation to indicate what should or should not be present in the structure. There is no easy way to verify that the code implementing the structure conforms to the size. No obvious correlation with a release or version number. 3. a bit-mask specifying attributes present in the structure Pro: Makes it easy for implementer to code new features, and to know and test dynamically at run-time what features are or not present in a structure that may have been compiled by a different release from the code accessing it. Con: A bit-mask must be defined and maintained "by hand", including the definition and exposure of all the bit symbols. Requires other documentation to correlate with a release or version number. The allocation size of the structure must be linked to the attributes "by implication" (i.e., given a pointer to a structure at run-time, the presence of an attribute that implies the presence of field xxx indicates that the allocation size of the structure is at least the sum of the offset to xxx within the structure plus the size of field xxx).