我要做:
int main () {
bla bla bla
void *onetype;
switch (USER_INPUT_TYPE) {
CASE CONVERT_TO_CHAR:
convert onetype VOID TO CHAR >>> HOW???
CASE CONVERT_TO_INT:
convert onetype VOID TO INT >>> HOW???
LOT OF CASES...
}
}
是的,我知道类型转换,但类型转换是“临时”更改。
那么,有没有办法用C语言来实现呢?
EDIT :
停停停!请看,你在做什么是类型转换,我知道这一点,你正在创建另一个所需类型的变量,如 int i = (int) onetype,我不想要这个,我想要其他类型,如 onetype = (int ) onetype,无需重新创建它们,无需分配另一个变量。
非常感谢大家!
您想要的是运行时类型信息 - 拥有一个只能在运行时确定类型的变量。 C 语言中没有此功能 - 一旦程序被编译,类型就会被删除,并且只存在内存 blob。动态语言维护类型信息并本地实现它。
您可以设计自己的本土类型标记系统:
typedef union {
int i;
char c;
float f;
} evil;
typedef struct {
evil value;
int type;
} tagged_t;
enum {
TYPE_INT, TYPE_CHAR, TYPE_FLOAT
};
tagged_t bar;
bar.value.c = 'a';
bar.type = TYPE_CHAR;
现在,每次您希望使用 tagged_t 类型时,您都必须为您存储的每种可能的变量类型实现一个条件,或者能够确定该代码区域是否允许某种类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)