Ваш вопрос спрашивает, можете ли вы смешать язык C с директивами препроцессора, чтобы автоматизировать генерацию кода с использованием директив языка C и препроцессора.
Ответ не в том, как вы пытаетесь это сделать, потому чтоо том, как работает препроцессор и компилятор C.
Препроцессор - это отдельный шаг от компиляции.Идея состоит в том, что Препроцессор выполняет шаг замены текста файла исходного кода C, чтобы сгенерировать новую временную версию файла исходного кода C, который затем компилируется компилятором C.
Это два разных шагаи сначала препроцессор выполняет свою работу, а затем выполняет свою работу компилятор C.
Я бы предложил написать простую программу, которая генерирует включаемый файл, содержащий список определений, которые вы хотите использовать.Затем в том месте, где вы хотите поместить эти определения, используйте директиву #include, чтобы включить ее в этот момент.
Так что если у вас есть простой скрипт или, возможно, программа на C, что-то вроде:
#include <stdio.h>
int main ()
{
int i;
for (i = 1; i <= 100; i++) printf ("DEF_GLOBAL_STRUCT(%d)\n", i);
return 0;
}
Затем вы компилируете его и запускаете из командной строки, перенаправляя вывод, как в:
mygen >junk.h
, затем в место, где вам нужны эти директивы:
#include <stdio.h>
#include <stdint.h>
#define DEF_GLOBAL_STRUCT(index) uint8_t m_##index##_size=2; \
uint32_t m_##index##_data1=0; \
uint32_t m_##index##_data2=0;
#include "junk.h"
int main()
{
printf("%u\n", m_1_size);
return 0;
}