Я не думаю, что это плохо. Оператор stringtize очень полезен для написания макросов, таких как утверждения:
#define assert(x) do { if (!(x)) { printf("assert failed: %s\n", #x); } } while (0)
Вы злоупотребляете любой полезной функцией. Однажды у меня появилась блестящая идея «упростить» атомы Qt, написав:
#define ATOM(x) (((#x)[0] << 24) | ((#x)[1] << 16) | ...
Так что вы можете сказать ATOM(MPEG)
и получить ('M' << 24 | 'P' << 16 | ...)
. На самом деле, он работал достаточно хорошо, чтобы gcc мог получать целочисленные константы из него ... Иногда ... Теперь это было зло!