如何创建#define 值的向量?
How to create vector of #define values?
我有一些定义值,例如:
#define DEF_1 0x0010
#define DEF_2 1001
#define DEF_3 3702
#define DEF_4 32772
我想将这些值保留在向量或数组中,但不幸的是我不知道它们将来会如何使用(如什么类型),所以不确定它应该是什么类型的向量?如您所见,甚至还有一个十六进制。
所以我想我可以做一个std::vector<*char>
。但以后每次我需要使用它时,我都需要将它转换成我需要的类型。
有没有更简单的方法?是否有任何通用类型允许我按原样使用数组成员 #defined
?
如有任何帮助,请提前致谢。
没有可以容纳任何你定义的东西的通用类型。让我举几个例子:
#define LESS <
从英文标识符来看,很明显这是一个比较函数的意思。在预处理器上下文中,这可以工作。但是,从 C++ 的角度来看,函数名称将是 operator<
,您需要考虑运算符重载。
#define FOO {
预处理器处理原始标记。对于裸 {
你想要什么 C++ 类型是不清楚的
结论必须是您选择一种适合您的类型,然后让编译器检查您定义的宏是否可以解释为该类型的有效表达式。如果不是,编译器会报错。
我有一些定义值,例如:
#define DEF_1 0x0010
#define DEF_2 1001
#define DEF_3 3702
#define DEF_4 32772
我想将这些值保留在向量或数组中,但不幸的是我不知道它们将来会如何使用(如什么类型),所以不确定它应该是什么类型的向量?如您所见,甚至还有一个十六进制。
所以我想我可以做一个std::vector<*char>
。但以后每次我需要使用它时,我都需要将它转换成我需要的类型。
有没有更简单的方法?是否有任何通用类型允许我按原样使用数组成员 #defined
?
如有任何帮助,请提前致谢。
没有可以容纳任何你定义的东西的通用类型。让我举几个例子:
#define LESS <
从英文标识符来看,很明显这是一个比较函数的意思。在预处理器上下文中,这可以工作。但是,从 C++ 的角度来看,函数名称将是 operator<
,您需要考虑运算符重载。
#define FOO {
预处理器处理原始标记。对于裸 {
结论必须是您选择一种适合您的类型,然后让编译器检查您定义的宏是否可以解释为该类型的有效表达式。如果不是,编译器会报错。