P99

◆ P99_OVALUE

#define P99_OVALUE (   X,
  ... 
)

For a pointer or array expression X return the underlying object.

Precondition
This requires that X is either a pointer or array, or in other words that (X)[0] is a valid expression.
This requires that the base type of X is one of the types listed in the arguments.
Returns
If X is a pointer to of one of the types listed in the argument list, X[0] is returned, that is it is assumed that the pointer points to one element of the underlying base type. Otherwise X is an lvalue of array type and this object is returned.
Remarks
argument 0 maybe evaluated several times for its type but only once for its value
argument 1 should correspond to a type that is not a VLA.
argument 2 should correspond to a type that is not a VLA.
argument 3 should correspond to a type that is not a VLA.

Definition at line 1073 of file p99_generic.h.