For performance reasons, SE does not do full evaluation of preprocessor directives while tagging.
So SE is seeing JQKA as literally JQKA, which naturally is a syntax error, and SE's tagging parser recovers after the semicolon.
You need to give SE a hint about the preprocessor directive:
In the Tools|Options dialog, in the C/C++ Preprocessing node, tell SE that "JQKA" is defined as nothing.