我要做:
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...
}
}
Run Code Online (Sandbox Code Playgroud)
是的,我知道类型转换,但是类型转换是一种"临时"改变.
那么,有没有办法在C中完成它?
编辑:
停止停止!请看,你在做什么是类型转换,我知道,你正在创建另一个所需类型的变量,如int i =(int)onetype,我不想要这个,我想要其他像onetype =(int )ontyype,不重新创建它们,不分配另一个变量.
非常感谢!
你想要的是运行时类型信息 - 有一个变量,其中类型只能在运行时确定.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;
Run Code Online (Sandbox Code Playgroud)
现在,每当您希望使用tagged_t类型时,必须为要存储的每种可能类型的变量实现一个条件,或者能够确定是否在该代码区域中允许某种类型.
归档时间: |
|
查看次数: |
11657 次 |
最近记录: |