Preprocessor directives can now appear in the argument list of function-like macro calls.

#pragma PP-tokens can now be macro replaced.
#include header names directly enclosed in <> are free of macro replacement.
Preprocess-only mode (-E) now outputs with #line as source info.
Moved testcases for #760 and #1357.
Added testcase for #1643.
This commit is contained in:
acqn
2022-07-26 21:10:38 +08:00
parent 80fc8cd11e
commit 2f357ba9b2
9 changed files with 420 additions and 144 deletions

30
test/val/bug1357.c Normal file
View File

@@ -0,0 +1,30 @@
/* issue #1357 - X Macros don't work with C preprocessor */
#define OPCODES(X) \
X(PUSHNIL) \
X(PUSHTRUE) \
X(PUSHFALSE)
enum {
#define X(op) op,
OPCODES(X)
#undef X
N_OPS
};
/* cc65 -E bug1357.c -o bug1357.c.pre
should produce something like this:
enum {
PUSHNIL,
PUSHTRUE,
PUSHFALSE,
N_OPS
};
*/
int main(void)
{
return 0;
}