#define P99_SIGNED (   EXPR)    (P99_PROMOTE_M1(EXPR) < P99_PROMOTE_1(EXPR))

Determine if EXPR has an unsigned or signed integral type.

Note that this macro does not evaluate EXPR but uses it only to determine its signedness. There are no side effects.

The result can always be determined at compile time, but it is not a constant expression in the strict sense of C99 if EXPR is not so.

Beware, the result of this expression is not the sign of EXPR, but whether or not the type of it could hold a signed value.

See also
P99_ISSIGNED for a similar macro that takes a type as an argument
P99_SIGN_PROMOTE for rules about integer sign promotion

Definition at line 622 of file p99_int.h.