(Да, это страшная C конкатенация препроцессоров токенов снова ...)
Я пытаюсь создать макрос CPP, который принимает несколько частей формулы и передает их в сделать готовый продукт. Я пробовал ##
по-разному, но всегда сталкиваюсь с ужасной проблемой «вставка X и Y не дает действительного токена препроцессора».
У меня есть токены 23
, TRIS
и SET
и нужно, чтобы макрос расширился до:
(sfr_t)(&TRISASET + ((23 / 16) * 0x100))
То есть что-то вроде:
#define gpioPIN_TO_REGSUB(P, R, S) (sfr_t)(& ## R ## A ## S ## + (((P)/16) * 0x100))
& TRIS A SET (23)
Но, конечно, это не работает.
Я пытался взять каждую порцию и передать их другому макросу для конкатенации, но он делает то же самое.