
Alberto Ganesh Barbati wrote:
However, if run into Wave, the program above produces the error message:
error: pasting the following two tokens does not give a valid preprocessing token: "e" and "-"
Who's right? I'd agree with Paul Mensonides, because "1e" is a valid pp token which is to be formed before applying the ## operator. But my understanding is quite limited in this area so I commit myself to the Gurus.
Paul is right and Wave is wrong. That's a known issue with Wave, it stems from the fact that Wave currently works on C++ tokens, not pp-tokens as mandated by the Standard. This will be fixed in the future, when I change Wave to operate on pp-tokens, rescanning these into C++ tokens after preprocessing. If you need to preprocess this kind of constructs with Wave, you may want to use the --variadics command line option, allowing concatenation of unrelated tokens.
Wave now correctly recognizes pp-number tokens, which get converted to C++ tokens just before they get returned to the calling application. This fixes a couple of known Wave preprocessing problems (I even enabled a couple of additional tests failing so far). Regards Hartmut