Я пытаюсь создать таблицу макроса C, которая берет серию макросов функции C и превращает ее в список одного из параметров макроса функции C, если другой параметр макроса функции C удовлетворяет некоторому условию.
Например, определите базу данных в FancyPantsTable.h:
#if defined (MY_FANCY_PANTS_TABLE)
FANCY_PANTS_DB( A, 123)
FANCY_PANTS_DB( B, 456)
FANCY_PANTS_DB( C, 456)
FANCY_PANTS_DB( D, 123)
#endif
Затем в FancyPants.c импортируйте FancyPantsTable.h везде, где вы хотите составить список.
#define numberSought 456
uint8 my456Array [] = {
#define FANCY_PANTS_DB( aUint8, num ) #if ( num == numberSought sought ) aUint8, #endif
#define MY_FANCY_PANTS_TABLE
#include "FancyPantsTable.h"
#undef MY_FANCY_PANTS_TABLE
};
#define numberSought 123
uint8 my123Array [] = {
#define FANCY_PANTS_DB( aUint8, num ) #if ( num == numberSought sought ) aUint8, #endif
#define MY_FANCY_PANTS_TABLE
#include "FancyPantsTable.h"
#undef MY_FANCY_PANTS_TABLE
};
Шаблоны макросов C трудны для отладки;прямо в #if я получаю сообщение об ошибке «ожидается имя макропараметра».
Возможно ли то, что я делаю.Как я могу это исправить?