Допустим у меня есть массив с числами
int numbers[] = {1, 2, 3, 4};
Мне нужно автоматически создать дефайны вида
#define DEF_[тут номер дефайна] [какое-либо число]
Конечный результат должен выглядеть следующим образом
#define DEF_1 42
#define DEF_2 54
#define DEF_3 45
#define DEF_4 98
Возможно ли это в C?
Ответ
Поскольку это средства препроцессора, т.е. выполняемые до компиляции, то и создавать их тоже нужно средствами препроцессора. Но динамическое создание директив препроцессора препроцессором же не предусмотрено. Да даже если бы и было предусмотрено - откуда брать ваши числа для макросов? Если препроцессор ничего о синтаксисе С вообще не знает?
Так что в лучшем случае - внешняя программа, которая будет это все либо дописывать в ваш файл, либо, что разумнее, создавать внешний, который можно включить через #include
Но я бы всерьез задумался над применением перечислений (enum), а не макросов...
Комментариев нет:
Отправить комментарий