diff options
| author | 2025-12-18 20:43:45 +0100 | |
|---|---|---|
| committer | 2025-12-18 20:43:45 +0100 | |
| commit | 4ee0f45c1b1713521c2030de1f51290e50f546ff (patch) | |
| tree | 1fdc71e14b2a1b56cb4af57c90380cc408ffea8a /c | |
| parent | 51153d1951461d33fb7e4688af6a5b38caa68841 (diff) | |
cpp: GNU extension for named variadic arguments
Diffstat (limited to 'c')
| -rw-r--r-- | c/lex.c | 11 |
1 files changed, 7 insertions, 4 deletions
@@ -781,13 +781,16 @@ ppdefine(struct lexer *lx) if (mac.variadic) { error(&tk.span, "expected `)' after `...'"); if (tk.t == TKEOF || tk.t == '\n') return; - else break; + break; } if (params.n > 0) { - if (tk.t != ',') { + if (tk.t == TKDOTS) { /* GNU extension 'args...' */ + mac.variadic = 1; + continue; + } if (tk.t != ',') { error(&tk.span, "expected `,' or `)'"); if (tk.t == TKEOF || tk.t == '\n') return; - else break; + break; } lex0(lx, &tk); } @@ -799,7 +802,7 @@ ppdefine(struct lexer *lx) } else { error(&tk.span, "expected parameter name or `)'"); if (tk.t == TKEOF || tk.t == '\n') return; - else break; + break; } } if (!params.n) vfree(¶ms); |