When the left operand of `##` is an operator, valid pastes are rejected. ```c #define cat(a,b) a##b cat(+,=) ``` gcc: `+=` simplecpp: `syntax error: failed to expand 'cat', Invalid ## usage when expanding 'cat': Combining '+' and 'b' yields an invalid token.` | Input | gcc | simplecpp | |---|---|---| | `cat(+,=)` | `+=` | error | | `cat(<<,=)` | `<<=` | error | | `cat(-,>)` | `->` | error | | `cat(&,&)` | `&&` | error | | `cat(\|,\|)` | `\|\|` | error | | `cat(+,+)` | `++` | error | | `#define B -##>`⏎`B` | `->` | error: Unexpected token '>' |
Activity
Fix cppcheck-opensource#724 (##: valid token pastes are rejected) (cp…