Страницы

Поиск по вопросам

вторник, 11 июня 2019 г.

Динамическое задание имени дефайна

Допустим у меня есть массив с числами
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), а не макросов...

Комментариев нет:

Отправить комментарий