{
ppmacro *macro;
bool wasnot = false;
+ bool wasneg = false;
if (!ftepp_skipspace(ftepp))
return false;
return false;
}
+ if (ftepp->token == TOKEN_OPERATOR && !strcmp(ftepp_tokval(ftepp), "-"))
+ {
+ wasneg = true;
+ ftepp_next(ftepp);
+ if (!ftepp_skipspace(ftepp))
+ return false;
+ }
+
switch (ftepp->token) {
case TOKEN_IDENT:
case TOKEN_TYPENAME:
}
break;
case TOKEN_STRINGCONST:
+ *value_out = 0;
*out = false;
break;
case TOKEN_INTCONST:
default:
ftepp_error(ftepp, "junk in #if: `%s` ...", ftepp_tokval(ftepp));
+ if (opts.debug)
+ ftepp_error(ftepp, "internal: token %i\n", ftepp->token);
return false;
}
+ if (wasneg)
+ *value_out = -*value_out;
if (wasnot) {
*out = !*out;
*value_out = (*out ? 1 : 0);