lex_file *inlex;
bool old_inmacro;
+ bool strip = false;
int nextok;
if (nextok == '#') {
/* raw concatenation */
++o;
+ strip = true;
break;
}
if ( (nextok == TOKEN_IDENT ||
macro_params_find(macro, macro->output[o+1]->value, &pi))
{
++o;
+
ftepp_stringify(ftepp, ¶ms[pi]);
break;
}
ftepp_out(ftepp, "\n", false);
break;
default:
- ftepp_out(ftepp, out->value, false);
+ buffer = out->value;
+ if (vec_size(macro->output) > o + 1 && macro->output[o+1]->token == '#')
+ buffer++;
+ if (strip) {
+ while (util_isspace(*buffer)) buffer++;
+ strip = false;
+ }
+ ftepp_out(ftepp, buffer, false);
break;
}
}
# define ALPHA(SEL) ALPHA_##SEL
-# define ABC ALPHA(a)##ALPHA(b)##ALPHA(c)
+# define ABC ALPHA(a)ALPHA(b)ALPHA(c)
void() main = {
if (ABC == "abc")
SCONS(hello, world)
#define FOO(X) X##X
-#define BAR(X) FOO(X)##FOO(X)
+#define BAR(X) FOO(X)FOO(X)
-REDIR(BAR(hello), BAR(world))
+REDIR(BAR(hello),BAR(world))