The parser confuses the final digit 'e' of an hex constant with the exponent 'e' of floats.
int main(int argc, char *argv[])
{
int a = 0xe+1; // error #2182: '0xe+1' is a preprocessing number but an invalid integer constant.
}
Adding spaces after 'e remove the error.