This makes the ‘##’ token paste operator have a special meaning when placed between a comma and a variable argument. If you write | #define err(format, ...) f(debug)werror("ERROR: "+format, ##__VA_ARGS__) and the variable argument is left out when the err macro is used, then the comma before the ‘##’ will be deleted. This does not happen if you pass an empty argument, nor does it happen if the token preceding ‘##’ is anything other than a comma.
o The define __COUNTER__ has been added. It is a unique integer
value, the first time the macro is expaded it will be 1, the next time
o The preprocessor can now be run with a cpp prefix feature. This is currently used by the precompiler to avoid two levels of preprocessing, one using "#cmod_" as the prefix and the other "#". o Dynamic macros You can now add programatic macros. There is currently no syntax that can be used to define these while compiling code, but you can add them from one program before compiling plug-ins/modules.