Лови решение для N < 100. Единственный недостаток - что N нужно разбивать на единицы и десятки вручную. Проверен на IAR C для ARM.
Пример для N=73:
Код
//#define ITEM(n) X##n
// Генерация единиц - служебные макросы
#define GEN0(n)
#define GEN1(n) ITEM(n##0)
#define GEN2(n) ITEM(n##0),ITEM(n##1)
#define GEN3(n) ITEM(n##0),ITEM(n##1),ITEM(n##2)
#define GEN4(n) ITEM(n##0),ITEM(n##1),ITEM(n##2),ITEM(n##3)
#define GEN5(n) ITEM(n##0),ITEM(n##1),ITEM(n##2),ITEM(n##3),ITEM(n##4)
#define GEN6(n) ITEM(n##0),ITEM(n##1),ITEM(n##2),ITEM(n##3),ITEM(n##4),ITEM(n##5)
#define GEN7(n) ITEM(n##0),ITEM(n##1),ITEM(n##2),ITEM(n##3),ITEM(n##4),ITEM(n##5),ITEM(n##6)
#define GEN8(n) ITEM(n##0),ITEM(n##1),ITEM(n##2),ITEM(n##3),ITEM(n##4),ITEM(n##5),ITEM(n##6),ITEM(n##7)
#define GEN9(n) ITEM(n##0),ITEM(n##1),ITEM(n##2),ITEM(n##3),ITEM(n##4),ITEM(n##5),ITEM(n##6),ITEM(n##7),ITEM(n##8)
#define GEN10(n) ITEM(n##0),ITEM(n##1),ITEM(n##2),ITEM(n##3),ITEM(n##4),ITEM(n##5),ITEM(n##6),ITEM(n##7),ITEM(n##8),ITEM(n##9)
// Генерация десятков - служебные макросы
#define GEND0(n)
#define GEND1(n) GEN10(n##0)
#define GEND2(n) GEN10(n##0),GEN10(n##1)
#define GEND3(n) GEN10(n##0),GEN10(n##1),GEN10(n##2)
#define GEND4(n) GEN10(n##0),GEN10(n##1),GEN10(n##2),GEN10(n##3)
#define GEND5(n) GEN10(n##0),GEN10(n##1),GEN10(n##2),GEN10(n##3),GEN10(n##4)
#define GEND6(n) GEN10(n##0),GEN10(n##1),GEN10(n##2),GEN10(n##3),GEN10(n##4),GEN10(n##5)
#define GEND7(n) GEN10(n##0),GEN10(n##1),GEN10(n##2),GEN10(n##3),GEN10(n##4),GEN10(n##5),GEN10(n##6)
#define GEND8(n) GEN10(n##0),GEN10(n##1),GEN10(n##2),GEN10(n##3),GEN10(n##4),GEN10(n##5),GEN10(n##6),GEN10(n##7)
#define GEND9(n) GEN10(n##0),GEN10(n##1),GEN10(n##2),GEN10(n##3),GEN10(n##4),GEN10(n##5),GEN10(n##6),GEN10(n##7),GEN10(n##8)
#define GEND10(n) GEN10(n##0),GEN10(n##1),GEN10(n##2),GEN10(n##3),GEN10(n##4),GEN10(n##5),GEN10(n##6),GEN10(n##7),GEN10(n##8),GEN10(n##9)
// А вот это надо вызывать для генерации кода
#define GEND(d,s,n) GEND##d(n),GEN##s(n##d)
// Макрос, генерящий одну запись. Надо переопределять
#define ITEM(n) X##n
typedef enum {
Xm1 = 1199,
GEND(7,3,)} T_XX;
typedef struct {
T_XX x;
int a, b;
} T_MS;
// Еще одна генерация
#undef ITEM
#define ITEM(n) {X##n, 0, 0}
const T_MS zzz[] = {
{Xm1, 0},
{Xm1, 0},
GEND(7,3,)
};