我正在研究某種腳本語言。包含結構的值是某些腳本語言的算術運算
struct myvar
{
char name[NAMELEN];
int type;
void* value;
}
type = 0 --> int* value
type = 1 --> char* value
type = 2 --> float* value
我遇到了算術運算的一些問題。看來,我需要無惡不作類型轉換的過每一個操作,在發展成爲寫一大堆代碼爲他們每個人,如:
case 0: // "="
if(factor1.name)
{
if((factor1.type == 1) && (factor2.type==1))
{
free(factor1.value);
int len = (strlen((STRING)factor2.value)+1)*sizeof(char);
factor1.value = malloc(len);
memcpy(factor1.value,factor2.value,len);
}
else if((factor1.type == 2) && (factor2.type==2))
*(FLOAT*)factor1.value = *(FLOAT*)factor2.value;
else if((factor1.type == 0) && (factor2.type==0))
*(INTEGER*)factor1.value = *(INTEGER*)factor2.value;
else if((factor1.type == 0) && (factor2.type==2))
*(INTEGER*)factor1.value = *(FLOAT*)factor2.value;
else if((factor1.type == 2) && (factor2.type==0))
*(FLOAT*)factor1.value = *(INTEGER*)factor2.value;
else
GetNextWord("error");
}
break;
是否有某種方式來避免這種令人厭煩的過程?否則我別無選擇,只能複製粘貼「=」,「〜」,「+」,「 - 」,「*」,「/」,「%」,「>」,「 <「,」> =「,」< =「,」==「,」〜=「,」AND「,」OR「
不是一個答案,但你知道,你有同樣的情況兩次? '((factor1.type == 1)&&(factor2.type == 1))' – MByD
@MByD,我認爲第一對應該是0,0,因爲它正在做字符串複製,並且類型0是字符串。 – AShelly
哦,是的,我的錯。感謝您的評分,我只是在關注主要問題的同時從頭開始。 – Anonymous