improved preprocessor statement handling