Failure to use multi-line code in *inc file macro definition
What is wrong with the *inc file code below:
#define ArrayToString(%array,%out,%del) set %out="" for { ##continue
set key=$order(%array("")) quit:key="" ##continue
set %out=%out_%del_key ##continue
} quit
Compilation at calling classmethod as : Set tQStr = $$$ArrayToString(pQArray,tQStr,"##") brings error as:

Comments
I would say, a little bit to much "set" command.
Instead of: Set tQStr = $$$ArrayToString(pQArray,tQStr,"##")
try this one: $$$ArrayToString(pQArray,tQStr,"##")
Your version gives something like: Set tQStr = set %out="" for { ...
as you see, %out isn't a command (and set would be undefined, but that isn't the problem)
By the way, the second line of your macro should be:
set key=$order(%array(key)) quit:key="" ##continue
else you have the perfect endless loop
One more comment, I'm not sure about the "quit" command after the closing curly brace, I think you don't need it (because it's outside of the FOR loop, hence it will stop the flow of your application)!