After tweeking around with the code for a bit, I finally got it to work. Instead of using if else statements in the macro, i used a dobule trinary operator.
Here is the macro and some variations of it if you like
#define SIGN_WORD(v) ((v) == 0)? "ZERO" : ((v) < 0)? "NEGATIVE" : "POSITVE"
#define SIGN_VALUE(v) ((v) == 0 )? 0 : ((v) < 0)? -1 : 1
The first version returns the string word for the values classification, and the second one simply returns 1 if positive, -1 if negative or 0. This would be a great tool to pass in a value, and quickly get its sign, or even use it negate other values.
It would still be nice to see some feedback, on how to do this using the if else statements as well as comments on this macro.