To reproduce with Emacs -Q: Open src/data.c and do M-x hide-ifdef-mode. Should get you something like: Debugger entered--Lisp error: (error "Bad token in parenthesized expression: 125") signal(error ("Bad token in parenthesized expression: 125")) error("Bad token in parenthesized expression: %s" 125) hif-factor() hif-math() hif-eq-expr() hif-and-expr() hif-or-expr() hif-expr() hif-parse-if-exp((lparen FLT_RADIX equal 2 and FLT_MANT_DIG equal 24 and FLT_MIN_EXP equal hif-minus 125 and FLT_MAX_EXP equal 128 rparen)) hif-canonicalize() hif-possibly-hide() hide-ifdef-guts() hif-recurse-on(1351 1547) hif-possibly-hide() hide-ifdef-guts() hide-ifdefs() hide-ifdef-mode(toggle) call-interactively(hide-ifdef-mode) execute-extended-command(nil) call-interactively(execute-extended-command) The bug occurs when `hif-factor' tries to parse the unary minus in: #if (FLT_RADIX == 2 && FLT_MANT_DIG == 24 \ && FLT_MIN_EXP == -125 && FLT_MAX_EXP == 128) The attached, somewhat naive, patch fixes the bug for me. Could someone who uses `hide-ifdef-mode' on a regular basis check whether that fix breaks something else. Thanks in advance.