[我猜,我想要的是类似于C ++ Accessing to enum values by '::' in C++的帖子:
我想:...将颜色值作为
Color::Red
。在当前的C ++(即C ++ 11及更高版本)中,您已经可以访问像这样的枚举值:
enum Color { Red }; Color c = Color::Red;
所以,我想知道-我可以在C中进行类似级别的访问,但是可以通过一个定义(因此我不必创建额外的变量)吗?例如,说我有以下代码:
#include <stdio.h>
int model_type = 1;
int model_variant = 4;
int main(void) {
printf("Hello World %d\n", model_variant);
return 0;
}
我想改写这样的东西:
int model_type = DEFAULT.MODEL_TYPE;
int model_variant = DEFAULT.MODEL_VARIANT;
我知道宏名(通过Can you use a.b notation in a #define macro name?):
它们不能包含点。
...但是我仍然想知道-可能有某种技巧,所以我可以在预处理器级别上实现这样的功能(能够通过DEFAULT.MODEL_TYPE访问数值) C?我想要预处理器,因为它只会在需要的地方插入原始数字-否则,我必须先定义一个结构,然后定义该结构类型的变量,然后填充该变量...
[如果没有,是否还有其他选项可用于类似的键入样式-说直接按名称访问枚举字段? (我尝试过enum DEFAULTS { MODEL_TYPE =1, MODEL_VARIANT = 4 };
,但是DEFAULTS
然后是“未声明的标识符”,因此DEFAULT.MODEL_TYPE
也不起作用-因此,从这个意义上讲,我无法将其用于我的目的)...] >
[我猜,我想要的是类似于C ++的此帖子,它在C ++中通过'::'访问枚举值:我想要:...以Color :: Red的形式访问Color值。在当前的C ++中(即...
C中的[object . foo
意味着(大约)”“在foo
上加上一个偏移量(与(char*)&object
关联),将结果转换为指向与foo
关联的类型的指针,然后取消引用”。