Как создать вектор значений #define? - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть некоторые определяемые значения, например, такие:

#define DEF_1 0x0010
#define DEF_2 1001
#define DEF_3 3702
#define DEF_4 32772

Я хочу сохранить эти значения в векторе или массиве, но, к сожалению, я не знаю, как они будут использоваться в будущем(как какого типа), так что не уверен, что это должен быть вектор какого типа?Как вы можете видеть, есть даже один гекс.

Так что я думаю, что могу сделать std::vector<*char>.Но потом, в будущем, каждый раз, когда мне нужно его использовать, мне нужно конвертировать его в нужный мне тип.

Нет ли более простого способа?Нет ли универсального типа, который позволял бы мне использовать элементы массива такими, как они: #defined?

За любую помощь, заранее спасибо.

1 Ответ

0 голосов
/ 14 декабря 2018

Не существует универсального типа, который может содержать все, что вы можете определить.Позвольте мне привести несколько примеров:

#define LESS <

Из английского идентификатора ясно, что это означает функцию сравнения.И в контексте препроцессора это может работать.Однако с точки зрения C ++ имя функции будет operator<, и вам необходимо учитывать перегрузку операторов.

#define FOO {

Препроцессор работает с необработанными токенами.Неизвестно, какой тип C ++ вы бы хотели использовать для {

. Вывод должен быть сделан: вы выбираете один тип, который вам подходит, а затем позволяете компилятору проверить, можно ли интерпретировать определенные вами макросы.как допустимые выражения этого типа.Если нет, компилятор будет жаловаться.

...