diff options
-rw-r--r-- | libacc/acc.cpp | 14 | ||||
-rw-r--r-- | libacc/tests/data/defines.c | 5 |
2 files changed, 16 insertions, 3 deletions
diff --git a/libacc/acc.cpp b/libacc/acc.cpp index 6c03657..475e308 100644 --- a/libacc/acc.cpp +++ b/libacc/acc.cpp @@ -3821,8 +3821,20 @@ class Compiler : public ErrorSink { inp(); } String value; + bool appendToValue = true; while (ch != '\n' && ch != EOF) { - value.append(ch); + // Check for '//' comments. + if (appendToValue && ch == '/') { + inp(); + if (ch == '/') { + appendToValue = false; + } else { + value.append('/'); + } + } + if (appendToValue && ch != EOF) { + value.append(ch); + } inp(); } char* pDefn = (char*)mGlobalArena.alloc(value.len() + 1); diff --git a/libacc/tests/data/defines.c b/libacc/tests/data/defines.c index 2a6fdf7..840917d 100644 --- a/libacc/tests/data/defines.c +++ b/libacc/tests/data/defines.c @@ -1,7 +1,8 @@ // Simple tests of the C preprocessor -#define A (1 + 2) +#define A (4 / 2) +#define B 1 // This is a comment. With a / in it. int main() { - return A; + return A + B; } |