Как именно работает трюк с двойной строкой?
По крайней мере, некоторые препроцессоры C позволяют вам преобразовать значение макроса в строку, а не его имя, передав его через один функционально-подобный макрос другому, который преобразовывает его в строку: #define STR1(x) #x #define STR2(x) STR1(x) #define THE_ANSWER 42 #define THE_ANSWER_STR STR2(THE_ANSWER) /* "42" */ Примеры использования здесь . Это работает, …