А что такое qcl? У меня нехорошее предчувствие, что это что-то
микрософтовское, у которого своё представление о порядке раскрытия
макросов-аргументов при передаче в другой макрос. Отсюда и лишняя
строка. По стандарту (мой вариант) STRINGIFY написан 2 раза потому,
что просто _STRINGIFY(n) не сработает, если n является в свою
очередь макросом. На выходе будет "n". Поэтому два макроса: вначале
STRINFIFY(n) превращается в _STRINGIFY(5), при первом раскрытии
макросов, а потом
_STRINGIFY(5) превращается в "5". У микрософта же какое-то своё странное представление о порядке раскрытия аругментов макросов, я его никогда не понимал, но оно отличается от стандарта и заставляет сложные макросы выписывать два раза: одну версию для gcc и стандартных компиляторов, вторую для микрософтовоских.
PS: ну да, в теле другого макроса макросе вместо STRINGIFY можно использовать сразу _STRINGIFY.
Демонстрация эффекта:
http://coliru.stacked-crooked.com/a/202737be5d2984bc